!(function () {
  if (!window.WebVideoCtrl) {
    var e = (function () {
        function e(e, t, n) {
          return ((e << 16) | (t << 8) | n).toString(16);
        }
        function n(e, t) {
          return (Array(t).join("0") + e).slice(-t);
        }
        function r(e) {
          var t = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
          if (e && t.test(e)) {
            if (4 === e.length) {
              for (var n = "#", r = 1; 4 > r; r += 1)
                n += e.slice(r, r + 1).concat(e.slice(r, r + 1));
              e = n;
            }
            for (var s = [], r = 1; 7 > r; r += 2)
              s.push(parseInt("0x" + e.slice(r, r + 2)));
            return "[" + s.join(",") + ",0.6]";
          }
          return e;
        }
        function s() {
          return void 0 !== s.unique
            ? s.unique
            : ((this.szIP = ""),
              (this.szHostName = ""),
              (this.szAuth = ""),
              (this.szHttpProtocol = "http://"),
              (this.iCGIPort = 80),
              (this.szDeviceIdentify = ""),
              (this.iDevicePort = -1),
              (this.iHttpPort = -1),
              (this.iHttpsPort = -1),
              (this.iRtspPort = -1),
              (this.iWSPort = -1),
              (this.iAudioType = 1),
              (this.m_iAudioBitRate = -1),
              (this.m_iAudioSamplingRate = -1),
              (this.iDeviceProtocol = x),
              (this.oProtocolInc = null),
              (this.iAnalogChannelNum = 0),
              (this.szDeviceType = ""),
              (this.bVoiceTalk = !1),
              (this.oAuthType = {}),
              (this.oStreamCapa = {
                bObtained: !1,
                bSupportShttpPlay: !1,
                bSupportShttpPlayback: !1,
                bSupportShttpsPlay: !1,
                bSupportShttpsPlayback: !1,
                bSupportShttpPlaybackTransCode: !1,
                bSupportShttpsPlaybackTransCode: !1,
                iIpChanBase: 1,
              }),
              (s.unique = this),
              void 0);
        }
        function o() {
          this.id = this.createUUID();
        }
        var a = "100%",
          u = "100%",
          c = "",
          l = "";
        (oSecurityCap = {}), (szAESKey = "");
        var d = {
            szversion: "websdk3.220200429",
            szContainerID: "",
            szColorProperty: "",
            szOcxClassId: "clsid:FDF0038A-CF64-4634-81AB-80F0A7946D6C",
            szMimeTypes: "application/webvideo-plugin-kit",
            szBasePath: "",
            iWndowType: 1,
            iPlayMode: 2,
            bWndFull: !0,
            iPackageType: 2,
            bDebugMode: !1,
            bNoPlugin: !0,
            cbSelWnd: null,
            cbDoubleClickWnd: null,
            cbEvent: null,
            cbRemoteConfig: null,
            cbInitPluginComplete: null,
            proxyAddress: null,
          },
          p = null,
          f = 0,
          h = !1,
          P = [],
          I = [],
          m = null,
          v = null,
          C = null,
          S = null,
          y = this,
          g = null;
        (this.w_options = d),
          (this.w_deviceSet = P),
          (this.w_wndSet = I),
          (this.w_xmlLocalCfg = g);
        var x = 1,
          D = 2,
          z = 200,
          b = 0,
          T = 1,
          A = 2,
          M = 3,
          L = 4,
          q = 5,
          R = 6,
          w = 0,
          G = 2,
          W = 3,
          X = 21,
          _ = -1,
          H = 0,
          k = "IPCamera",
          E = "IPDome",
          Z = "IPZoom",
          B =
            "<?xml version='1.0' encoding='utf-8'?><FileVersion><Platform name='win32'><npWebVideoKitPlugin.dll>3,0,6,2</npWebVideoKitPlugin.dll><WebVideoKitActiveX.ocx>3,0,6,2</WebVideoKitActiveX.ocx><PlayCtrl.dll>7,3,3,61</PlayCtrl.dll><StreamTransClient.dll>1,1,3,6</StreamTransClient.dll><SystemTransform.dll>2,5,2,8</SystemTransform.dll><NetStream.dll>1,0,5,59</NetStream.dll></Platform></FileVersion>";
        (window.GetSelectWndInfo = function (e) {
          if (ct()) {
            f = e;
            var n = [];
            n.push("<RealPlayInfo>"),
              n.push("<SelectWnd>" + e + "</SelectWnd>"),
              n.push("</RealPlayInfo>"),
              d.cbSelWnd && d.cbSelWnd(S.loadXML(n.join("")));
          } else {
            var r = S.loadXML(e);
            if (t.$XML(r).find("SelectWnd", !0).length > 0) {
              (f = parseInt(t.$XML(r).find("SelectWnd").eq(0).text(), 10)),
                null === g && Y();
              var n = [];
              n.push("<RealPlayInfo>"),
                n.push("<SelectWnd>" + f + "</SelectWnd>"),
                n.push("</RealPlayInfo>"),
                d.cbSelWnd && d.cbSelWnd(S.loadXML(n.join("")));
            } else if (t.$XML(r).find("DoubleClickWnd", !0).length > 0) {
              var s = parseInt(
                t.$XML(r).find("DoubleClickWnd").eq(0).text(),
                10
              );
              (h = "0" === t.$XML(r).find("IsFullScreen").eq(0).text()),
                d.cbDoubleClickWnd && d.cbDoubleClickWnd(s, h);
            }
          }
        }),
          (window.WindowDblClick = function (e) {
            (h = e), d.cbDoubleClickWnd && d.cbDoubleClickWnd(f, h);
          }),
          (window.ZoomInfoCallback = function (e) {
            var t = y.findWndIndexByIndex(f);
            if (-1 != t) {
              var n = I[t];
              if (((t = y.findDeviceIndexByIP(n.szDeviceIdentify)), -1 != t)) {
                var r = P[t];
                r.oProtocolInc.set3DZoom(r, n, e, {
                  success: function () {},
                  error: function () {},
                });
              }
            }
          }),
          (window.PluginEventHandler = function (e, t, n) {
            ct()
              ? d.cbEvent && d.cbEvent(e, t, n)
              : (w == t || G == t
                  ? y.I_Stop(e)
                  : X == t
                  ? y.I_StopRecord(e)
                  : W == t && y.I_StopVoiceTalk(),
                d.cbEvent && d.cbEvent(t, e, n));
          }),
          (window.GetHttpInfo = function (e, t) {
            Pt.prototype.processCallback(e, t);
          }),
          (window.RemoteConfigInfo = function (e) {
            d.cbRemoteConfig && d.cbRemoteConfig(e);
          }),
          (window.KeyBoardEventInfo = function (e) {
            100 === parseInt(e, 10) &&
              ((h = !1), d.cbDoubleClickWnd && d.cbDoubleClickWnd(f, h));
          });
        var N = function () {
            if (d.bDebugMode) {
              var e = F(arguments);
              m._alert(e);
            }
          },
          F = function () {
            for (var e = arguments[0], t = 1; t < arguments.length; t++)
              e = e.replace("%s", arguments[t]);
            return e;
          },
          V = function (e) {
            var t = e.indexOf(":");
            return t > -1 ? e.substring(0, t) : e;
          },
          U = function (e) {
            return "undefined" == typeof e;
          },
          j = function (e) {
            return "[object Object]" === Object.prototype.toString.call(e);
          },
          O = function (e, t) {
            var n = "",
              r = {
                type: "GET",
                async: !1,
                success: function (e) {
                  e && e.Token && (n = e.Token.value);
                },
              },
              s = "ISAPI/Security/token?format=json";
            return y.I_SendHTTPRequest(t, s, r), n;
          },
          J = function (e, n, r) {
            y.I_GetSecurityVersion(e, {
              success: function (e) {
                (oSecurityCap.iKeyIterateNum = parseInt(
                  t.$XML(e).find("keyIterateNum").eq(0).text(),
                  10
                )),
                  (oSecurityCap.oIrreversibleEncrypt = {
                    bSupport:
                      "true" === t.$XML(e).find("isIrreversible").eq(0).text(),
                    salt: t.$XML(e).find("salt").eq(0).text(),
                  }),
                  (szAESKey = S.strToAESKey(n, r));
              },
            });
          },
          K = function () {
            var e = "";
            if (S.browser().msie)
              e =
                "<object classid='" +
                d.szOcxClassId +
                "' codebase='' standby='Waiting...' " +
                "id='" +
                c +
                "' width='" +
                a +
                "' height='" +
                u +
                "' align='center' >" +
                "<param name='wndtype' value='" +
                d.iWndowType +
                "'>" +
                "<param name='playmode' value='" +
                d.iPlayMode +
                "'>" +
                "<param name='colors' value='" +
                d.szColorProperty +
                "'></object>";
            else
              for (var t = navigator.mimeTypes.length, n = 0; t > n; n++)
                navigator.mimeTypes[n].type.toLowerCase() == d.szMimeTypes &&
                  (e =
                    "<embed align='center' type='" +
                    d.szMimeTypes +
                    "' width='" +
                    a +
                    "' height='" +
                    u +
                    "' name='" +
                    l +
                    "' wndtype='" +
                    d.iWndowType +
                    "' playmode='" +
                    d.iPlayMode +
                    "' colors='" +
                    d.szColorProperty +
                    "'>");
            return e;
          },
          Y = function () {
            if (!ct() && null !== p) {
              var e = p.HWP_GetLocalConfig();
              g = S.loadXML(e);
            }
          },
          Q = function (e) {
            y.I_GetDeviceInfo(e.szIP, {
              success: function (n) {
                e.szDeviceType = t.$XML(n).find("deviceType").eq(0).text();
              },
            }),
              y.I_GetAnalogChannelInfo(e.szIP, {
                success: function () {},
                error: function () {},
              }),
              y.I_GetAudioInfo(e.szIP, {
                success: function (n) {
                  var r = t.$XML(n).find("audioCompressionType", !0);
                  if (r.length > 0) {
                    var s = t.$XML(r).eq(0).text(),
                      o = 0;
                    "G.711ulaw" == s
                      ? (o = 1)
                      : "G.711alaw" == s
                      ? (o = 2)
                      : "G.726" == s
                      ? (o = 3)
                      : "MP2L2" == s || "MPEL2" == s
                      ? (o = 4)
                      : "G.722.1" == s
                      ? (o = 0)
                      : "AAC" == s
                      ? (o = 5)
                      : "PCM" == s && (o = 6),
                      (e.iAudioType = o);
                  }
                  (e.m_iAudioBitRate =
                    "" !== t.$XML(n).find("audioBitRate").eq(0).text()
                      ? 1e3 *
                        parseInt(
                          t.$XML(n).find("audioBitRate").eq(0).text(),
                          10
                        )
                      : 0),
                    (e.m_iAudioSamplingRate =
                      "" !== t.$XML(n).find("audioSamplingRate").eq(0).text()
                        ? 1e3 *
                          parseInt(
                            t.$XML(n).find("audioSamplingRate").eq(0).text(),
                            10
                          )
                        : 0);
                },
              });
          },
          et = function (e) {
            (e.bSupportWebsocket = !1),
              (e.bSupportSubStreamPlayback = !1),
              e.oProtocolInc.getSystemCapa(e, {
                success: function (n) {
                  var r = t
                    .$XML(n)
                    .find("NetworkCap")
                    .eq(0)
                    .find("isSupportWebsocket", !0);
                  r.length > 0 &&
                    (e.bSupportWebsocket =
                      "true" ===
                      t
                        .$XML(n)
                        .find("NetworkCap")
                        .eq(0)
                        .find("isSupportWebsocket")
                        .eq(0)
                        .text()),
                    (e.bSupportWebsocket = !0),
                    (r = t
                      .$XML(n)
                      .find("RacmCap")
                      .eq(0)
                      .find("isSupportMainAndSubRecord", !0)),
                    r.length > 0 &&
                      (e.bSupportSubStreamPlayback =
                        "true" ===
                        t
                          .$XML(n)
                          .find("RacmCap")
                          .eq(0)
                          .find("isSupportMainAndSubRecord")
                          .eq(0)
                          .text()),
                    (e.bSupportSubStreamPlayback = !0);
                },
              });
          },
          tt = function () {
            var e = d.bWndFull ? 1 : 0;
            p.HWP_SetCanFullScreen(e), p.HWP_SetPackageType(d.iPackageType);
          },
          nt = function (e) {
            var t = -1,
              n = -1,
              r = -1,
              s = null;
            if (it(e)) (s = rt(e)), (t = s.iRtspPort), (r = s.iDevicePort);
            else {
              for (var o = ot(e), i = !1, a = 0; a < o.length; a++)
                if (o[a].ipv4 == e.szIP || o[a].ipv6 == e.szIP) {
                  i = !0;
                  break;
                }
              i
                ? (s = rt(e))
                : ((s = st(e)),
                  -1 == s.iRtspPort && -1 == s.iDevicePort && (s = rt(e))),
                (t = s.iRtspPort),
                (n = s.iHttpPort),
                (r = s.iDevicePort);
            }
            return s;
          },
          rt = function (e) {
            var n = -1,
              r = -1,
              s = -1;
            return (
              e.oProtocolInc.getPortInfo(e, {
                async: !1,
                success: function (e) {
                  var o = t.$XML(e).find("AdminAccessProtocol", !0);
                  n = 554;
                  for (var i = 0, a = o.length; a > i; i++)
                    "rtsp" ===
                      t
                        .$XML(o)
                        .eq(i)
                        .find("protocol")
                        .eq(0)
                        .text()
                        .toLowerCase() &&
                      (n = parseInt(
                        t.$XML(o).eq(i).find("portNo").eq(0).text(),
                        10
                      )),
                      "http" ===
                        t
                          .$XML(o)
                          .eq(i)
                          .find("protocol")
                          .eq(0)
                          .text()
                          .toLowerCase() &&
                        (r = parseInt(
                          t.$XML(o).eq(i).find("portNo").eq(0).text(),
                          10
                        )),
                      "dev_manage" ===
                        t
                          .$XML(o)
                          .eq(i)
                          .find("protocol")
                          .eq(0)
                          .text()
                          .toLowerCase() &&
                        (s = parseInt(
                          t.$XML(o).eq(i).find("portNo").eq(0).text(),
                          10
                        ));
                },
                error: function () {
                  (n = -1), (r = -1), (s = -1);
                },
              }),
              { iRtspPort: n, iHttpPort: r, iDevicePort: s }
            );
          },
          st = function (e) {
            var n = -1,
              r = -1,
              s = -1;
            return (
              e.oProtocolInc.getUPnPPortStatus(e, {
                async: !1,
                success: function (e) {
                  for (
                    var o = t.$XML(e).find("portStatus", !0),
                      i = 0,
                      a = o.length;
                    a > i;
                    i++
                  )
                    "rtsp" ==
                      t
                        .$XML(o)
                        .eq(i)
                        .find("internalPort")
                        .eq(0)
                        .text()
                        .toLowerCase() &&
                      (n = parseInt(
                        t.$XML(o).eq(i).find("externalPort").eq(0).text(),
                        10
                      )),
                      "http" ==
                        t
                          .$XML(o)
                          .eq(i)
                          .find("internalPort")
                          .eq(0)
                          .text()
                          .toLowerCase() &&
                        (r = parseInt(
                          t.$XML(o).eq(i).find("externalPort").eq(0).text(),
                          10
                        )),
                      "admin" ==
                        t
                          .$XML(o)
                          .eq(i)
                          .find("internalPort")
                          .eq(0)
                          .text()
                          .toLowerCase() &&
                        (s = parseInt(
                          t.$XML(o).eq(i).find("externalPort").eq(0).text(),
                          10
                        ));
                },
                error: function () {
                  (n = -1), (r = -1), (s = -1);
                },
              }),
              { iRtspPort: n, iHttpPort: r, iDevicePort: s }
            );
          },
          ot = function (e) {
            var n = [];
            return (
              e.oProtocolInc.getNetworkBond(e, {
                async: !1,
                success: function (r) {
                  "true" == t.$XML(r).find("enabled").eq(0).text()
                    ? n.push({
                        ipv4: t.$XML(r).find("ipAddress").eq(0).text(),
                        ipv6: t.$XML(r).find("ipv6Address").eq(0).text(),
                      })
                    : e.oProtocolInc.getNetworkInterface(e, {
                        async: !1,
                        success: function (e) {
                          for (
                            var r = t.$XML(e).find("NetworkInterface", !0),
                              s = 0,
                              o = r.length;
                            o > s;
                            s++
                          ) {
                            n.push({
                              ipv4: t.$XML(e).find("ipAddress").eq(0).text(),
                              ipv6: t.$XML(e).find("ipv6Address").eq(0).text(),
                            });
                            break;
                          }
                        },
                        error: function () {},
                      });
                },
                error: function () {
                  e.oProtocolInc.getNetworkInterface(e, {
                    async: !1,
                    success: function (e) {
                      for (
                        var r = t.$XML(e).find("NetworkInterface", !0),
                          s = 0,
                          o = r.length;
                        o > s;
                        s++
                      ) {
                        n.push({
                          ipv4: t.$XML(e).find("ipAddress").eq(0).text(),
                          ipv6: t.$XML(e).find("ipv6Address").eq(0).text(),
                        });
                        break;
                      }
                    },
                    error: function () {},
                  });
                },
              }),
              n
            );
          },
          it = function (e) {
            var n = !1;
            return (
              e.oProtocolInc.getPPPoEStatus(e, {
                async: !1,
                success: function (e) {
                  n =
                    t.$XML(e).find("ipAddress", !0).length > 0
                      ? !0
                      : t.$XML(e).find("ipv6Address", !0).length > 0
                      ? !0
                      : !1;
                },
                error: function () {
                  n = !1;
                },
              }),
              n
            );
          },
          at = function (e) {
            e.oProtocolInc instanceof It &&
              e.oProtocolInc.getSDKCapa(e, {
                async: !1,
                success: function (n) {
                  (e.oStreamCapa.bObtained = !0),
                    (e.oStreamCapa.bSupportShttpPlay =
                      "true" ===
                      t.$XML(n).find("isSupportHttpPlay").eq(0).text()),
                    (e.oStreamCapa.bSupportShttpPlayback =
                      "true" ===
                      t.$XML(n).find("isSupportHttpPlayback").eq(0).text()),
                    (e.oStreamCapa.bSupportShttpsPlay =
                      "true" ===
                      t.$XML(n).find("isSupportHttpsPlay").eq(0).text()),
                    (e.oStreamCapa.bSupportShttpsPlayback =
                      "true" ===
                      t.$XML(n).find("isSupportHttpsPlayback").eq(0).text()),
                    (e.oStreamCapa.bSupportShttpPlaybackTransCode =
                      "true" ===
                      t
                        .$XML(n)
                        .find("isSupportHttpTransCodePlayback")
                        .eq(0)
                        .text()),
                    (e.oStreamCapa.bSupportShttpsPlaybackTransCode =
                      "true" ===
                      t
                        .$XML(n)
                        .find("isSupportHttpsTransCodePlayback")
                        .eq(0)
                        .text()),
                    (e.oStreamCapa.iIpChanBase =
                      t.$XML(n).find("ipChanBase", !0).length > 0
                        ? parseInt(
                            t.$XML(n).find("ipChanBase").eq(0).text(),
                            10
                          )
                        : 1);
                },
                error: function () {
                  e.oStreamCapa.bObtained = !0;
                },
              });
          },
          ut = function (e) {
            var t = {
              TransFrameRate: "",
              TransResolution: "",
              TransBitrate: "",
            };
            if (
              (S.extend(t, e),
              "" == t.TransFrameRate ||
                "" == t.TransResolution ||
                "" == t.TransBitrate)
            )
              return "";
            var n = [];
            return (
              n.push("<?xml version='1.0' encoding='UTF-8'?>"),
              n.push("<CompressionInfo>"),
              n.push(
                "<TransFrameRate>" + t.TransFrameRate + "</TransFrameRate>"
              ),
              n.push(
                "<TransResolution>" + t.TransResolution + "</TransResolution>"
              ),
              n.push("<TransBitrate>" + t.TransBitrate + "</TransBitrate>"),
              n.push("</CompressionInfo>"),
              n.join("")
            );
          },
          ct = function () {
            if (d.bNoPlugin) {
              var e = S.browser();
              return (e.chrome && parseInt(e.version, 10) > 45) ||
                (e.mozilla && parseInt(e.version, 10) > 52)
                ? !0
                : !1;
            }
            return !1;
          },
          lt = function (e) {
            var t = location.hostname,
              n = location.port || "80";
            return (
              d.proxyAddress &&
                ((t = d.proxyAddress.ip), (n = d.proxyAddress.port)),
              /^(http|https):\/\/([^\/]+)(.+)$/.test(e) &&
                (e = e.replace(RegExp.$2, t + ":" + n)),
              S.cookie("webVideoCtrlProxy", RegExp.$2, { raw: !0 }),
              e
            );
          },
          dt = function (e) {
            var t = location.hostname,
              n = location.port || "80";
            return (
              /^(ws):\/\/([^\/:]+):(\d+)\/(.+)$/.test(e) &&
                (e = e.replace(RegExp.$2 + ":" + RegExp.$3, t + ":" + n)),
              e.indexOf("ws") > -1
                ? S.cookie("webVideoCtrlProxyWs", RegExp.$2 + ":" + RegExp.$3, {
                    raw: !0,
                  })
                : S.cookie(
                    "webVideoCtrlProxyWss",
                    RegExp.$2 + ":" + RegExp.$3,
                    { raw: !0 }
                  ),
              S.cookie("webVideoCtrlProxyWsChannel", RegExp.$4, { raw: !0 }),
              e + "/webSocketVideoCtrlProxy"
            );
          },
          pt = function () {
            var e = "<ResponseStatus>";
            return (
              (e += "<requestURL></requestURL>"),
              (e += "<statusCode>4</statusCode>"),
              (e += "<statusString>Invalid Operation</statusString>"),
              (e += "<subStatusCode>notSupport</subStatusCode>"),
              (e += "</ResponseStatus>"),
              S.loadXML(e)
            );
          };
        (this.I_SupportNoPlugin = function () {
          return ct();
        }),
          (this.I_DestroyWorker = function () {
            null !== p && ct() && p.JS_DestroyWorker();
          }),
          (this.I_Resize = function (e, t) {
            null !== p && ct() && ((a = e), (u = t), p.JS_Resize(e, t));
          }),
          (this.I_InitPlugin = function (e, t, n) {
            if (((a = e), (u = t), S.extend(d, n), ct())) {
              var r = S.getDirName();
              r &&
                (("object" == typeof exports && "undefined" != typeof module) ||
                  ("function" == typeof define && define.amd
                    ? require([r + "/jsPlugin-1.2.0.min.js"], function (e) {
                        (window.JSPlugin = e.JSPlugin),
                          n.cbInitPluginComplete && n.cbInitPluginComplete();
                      })
                    : S.loadScript(r + "/jsPlugin-1.2.0.min.js", function () {
                        n.cbInitPluginComplete && n.cbInitPluginComplete();
                      }))),
                window.addEventListener("resize", function () {
                  null !== p &&
                    ct() &&
                    p.JS_Resize(
                      $("#divPlugin").width(),
                      $("#divPlugin").height()
                    );
                }),
                U(document.fullScreen)
                  ? U(document.webkitIsFullScreen)
                    ? U(document.mozFullScreen) ||
                      document.addEventListener(
                        "mozfullscreenchange",
                        function () {
                          var e =
                            document.fullscreen ||
                            document.webkitIsFullScreen ||
                            document.mozFullScreen ||
                            !1;
                          h && !e && window.KeyBoardEventInfo(100);
                        }
                      )
                    : document.addEventListener(
                        "webkitfullscreenchange",
                        function () {
                          var e =
                            document.fullscreen ||
                            document.webkitIsFullScreen ||
                            document.mozFullScreen ||
                            !1;
                          h && !e && window.KeyBoardEventInfo(100);
                        }
                      )
                  : document.addEventListener("fullscreenchange", function () {
                      var e =
                        document.fullscreen ||
                        document.webkitIsFullScreen ||
                        document.mozFullScreen ||
                        !1;
                      h && !e && window.KeyBoardEventInfo(100);
                    }),
                window.addEventListener("unload", function () {
                  null !== p && p.JS_DestroyWorker();
                });
            } else n.cbInitPluginComplete && n.cbInitPluginComplete();
          }),
          (this.I_InsertOBJECTPlugin = function (e) {
            if (
              (U(e) || (d.szContainerID = e),
              null == document.getElementById(d.szContainerID))
            )
              return -1;
            if (
              null != document.getElementById(c) ||
              0 != document.getElementsByName(c).length
            )
              return -1;
            if (ct()) {
              var t = {
                  szId: e,
                  iType: 1,
                  iWidth: a,
                  iHeight: u,
                  iMaxSplit: 4,
                  iCurrentSplit: d.iWndowType,
                  szBasePath: S.getDirName(),
                },
                n = d.szColorProperty;
              if ("" != n) {
                for (
                  var r = {}, s = n.split(";"), o = "", i = 0, f = s.length;
                  f > i;
                  i++
                )
                  (o = s[i]),
                    o.indexOf("sub-background") > -1
                      ? (r.background = "#" + o.split(":")[1])
                      : o.indexOf("sub-border-select") > -1
                      ? (r.borderSelect = "#" + o.split(":")[1])
                      : o.indexOf("sub-border") > -1 &&
                        (r.border = "#" + o.split(":")[1]);
                t.oStyle = r;
              }
              p = new JSPlugin(t);
            } else
              (document.getElementById(d.szContainerID).innerHTML = K()),
                (p = S.browser().msie
                  ? document.getElementById(c)
                  : document.getElementsByName(l)[0]);
            return null == p && null == p.object
              ? -1
              : ("object" == typeof window.attachEvent &&
                  S.browser().msie &&
                  (p.attachEvent("GetSelectWndInfo", GetSelectWndInfo),
                  p.attachEvent("ZoomInfoCallback", ZoomInfoCallback),
                  p.attachEvent("GetHttpInfo", GetHttpInfo),
                  p.attachEvent("PluginEventHandler", PluginEventHandler),
                  p.attachEvent("RemoteConfigInfo", RemoteConfigInfo),
                  p.attachEvent("KeyBoardEventInfo", KeyBoardEventInfo)),
                Y(),
                0);
          }),
          (this.I_WriteOBJECT_XHTML = function () {
            return ct()
              ? -1
              : (document.writeln(K()),
                (p = S.browser().msie
                  ? document.getElementById(c)
                  : document.getElementsByName(l)[0]),
                null == p && null == p.object
                  ? -1
                  : ("object" == typeof window.attachEvent &&
                      S.browser().msie &&
                      (p.attachEvent("GetSelectWndInfo", GetSelectWndInfo),
                      p.attachEvent("ZoomInfoCallback", ZoomInfoCallback),
                      p.attachEvent("GetHttpInfo", GetHttpInfo),
                      p.attachEvent("PluginEventHandler", PluginEventHandler),
                      p.attachEvent("RemoteConfigInfo", RemoteConfigInfo),
                      p.attachEvent("KeyBoardEventInfo", KeyBoardEventInfo)),
                    Y(),
                    0));
          }),
          (this.I_OpenFileDlg = function (e) {
            var t = "";
            if (ct()) return t;
            if (((t = p.HWP_OpenFileBrowser(e, "")), null == t)) return "";
            if (1 == e) {
              if (t.length > 100) return -1;
            } else if (t.length > 130) return -1;
            return t;
          }),
          (this.I2_OpenFileDlg = function (e) {
            var t = "",
              n = $.Deferred();
            return (
              ct()
                ? p.JS_OpenFileBrowser(e, "").then(function (t) {
                    null != t
                      ? 1 == e
                        ? t.length > 100 && n.resolve(-1)
                        : t.length > 130 && n.resolve(-1)
                      : n.resolve(),
                      n.resolve(t);
                  })
                : ((t = p.HWP_OpenFileBrowser(e, "")),
                  null != t
                    ? 1 == e
                      ? t.length > 100 && n.resolve(-1)
                      : t.length > 130 && n.resolve(-1)
                    : n.resolve(),
                  n.resolve(t)),
              n
            );
          }),
          (this.I_GetLocalCfg = function () {
            var e = null;
            if (ct()) return e;
            var n = p.HWP_GetLocalConfig(),
              r = [];
            return (
              (g = S.loadXML(n)),
              r.push("<LocalConfigInfo>"),
              r.push(
                "<ProtocolType>" +
                  t.$XML(g).find("ProtocolType").eq(0).text() +
                  "</ProtocolType>"
              ),
              r.push(
                "<PackgeSize>" +
                  t.$XML(g).find("PackgeSize").eq(0).text() +
                  "</PackgeSize>"
              ),
              r.push(
                "<PlayWndType>" +
                  t.$XML(g).find("PlayWndType").eq(0).text() +
                  "</PlayWndType>"
              ),
              r.push(
                "<BuffNumberType>" +
                  t.$XML(g).find("BuffNumberType").eq(0).text() +
                  "</BuffNumberType>"
              ),
              r.push(
                "<RecordPath>" +
                  t.$XML(g).find("RecordPath").eq(0).text() +
                  "</RecordPath>"
              ),
              r.push(
                "<CapturePath>" +
                  t.$XML(g).find("CapturePath").eq(0).text() +
                  "</CapturePath>"
              ),
              r.push(
                "<PlaybackFilePath>" +
                  t.$XML(g).find("PlaybackFilePath").eq(0).text() +
                  "</PlaybackFilePath>"
              ),
              r.push(
                "<PlaybackPicPath>" +
                  t.$XML(g).find("PlaybackPicPath").eq(0).text() +
                  "</PlaybackPicPath>"
              ),
              r.push(
                "<DeviceCapturePath>" +
                  t.$XML(g).find("DeviceCapturePath").eq(0).text() +
                  "</DeviceCapturePath>"
              ),
              r.push(
                "<DownloadPath>" +
                  t.$XML(g).find("DownloadPath").eq(0).text() +
                  "</DownloadPath>"
              ),
              r.push(
                "<IVSMode>" +
                  t.$XML(g).find("IVSMode").eq(0).text() +
                  "</IVSMode>"
              ),
              r.push(
                "<CaptureFileFormat>" +
                  t.$XML(g).find("CaptureFileFormat").eq(0).text() +
                  "</CaptureFileFormat>"
              ),
              r.push("</LocalConfigInfo>"),
              (e = S.loadXML(r.join("")))
            );
          }),
          (this.I_SetLocalCfg = function (e) {
            if (ct()) return -1;
            var n = S.loadXML(e),
              r = !1;
            return (
              t
                .$XML(g)
                .find("ProtocolType")
                .eq(0)
                .text(t.$XML(n).find("ProtocolType").eq(0).text()),
              t
                .$XML(g)
                .find("PackgeSize")
                .eq(0)
                .text(t.$XML(n).find("PackgeSize").eq(0).text()),
              t
                .$XML(g)
                .find("PlayWndType")
                .eq(0)
                .text(t.$XML(n).find("PlayWndType").eq(0).text()),
              t
                .$XML(g)
                .find("BuffNumberType")
                .eq(0)
                .text(t.$XML(n).find("BuffNumberType").eq(0).text()),
              t
                .$XML(g)
                .find("RecordPath")
                .eq(0)
                .text(t.$XML(n).find("RecordPath").eq(0).text()),
              t
                .$XML(g)
                .find("CapturePath")
                .eq(0)
                .text(t.$XML(n).find("CapturePath").eq(0).text()),
              t
                .$XML(g)
                .find("PlaybackFilePath")
                .eq(0)
                .text(t.$XML(n).find("PlaybackFilePath").eq(0).text()),
              t
                .$XML(g)
                .find("DeviceCapturePath")
                .eq(0)
                .text(t.$XML(n).find("DeviceCapturePath").eq(0).text()),
              t
                .$XML(g)
                .find("PlaybackPicPath")
                .eq(0)
                .text(t.$XML(n).find("PlaybackPicPath").eq(0).text()),
              t
                .$XML(g)
                .find("DownloadPath")
                .eq(0)
                .text(t.$XML(n).find("DownloadPath").eq(0).text()),
              t
                .$XML(g)
                .find("IVSMode")
                .eq(0)
                .text(t.$XML(n).find("IVSMode").eq(0).text()),
              t
                .$XML(g)
                .find("CaptureFileFormat")
                .eq(0)
                .text(t.$XML(n).find("CaptureFileFormat").eq(0).text()),
              (r = p.HWP_SetLocalConfig(S.toXMLStr(g))),
              r ? 0 : -1
            );
          });
        var ft = function (e, t, n, r, o, i, a) {
          var u = { protocol: t, success: null, error: null };
          S.extend(u, a),
            S.extend(u, {
              success: function (u) {
                var c = new s();
                (c.szIP = e),
                  2 == t
                    ? ((c.szHttpProtocol = "https://"), (c.iHttpsPort = n))
                    : ((c.szHttpProtocol = "http://"), (c.iHttpPort = n)),
                  (c.iCGIPort = n),
                  (c.szDeviceIdentify = e + "_" + n),
                  (c.szAuth = r),
                  (c.iDeviceProtocol = o),
                  (c.oProtocolInc = i),
                  N("使用%s协议登录成功", o),
                  Q(c),
                  tt(),
                  et(c),
                  P.push(jQuery.extend({}, c)),
                  a.success && a.success(u);
              },
              error: function (e, t) {
                a.error && a.error(e, t);
              },
            }),
            i.login(e, n, r, u);
        };
        (this.getAuthType = function (e, n, r, s, o, i) {
          e.oAuthType[n] = 1;
          var a = v,
            u = {
              async: !0,
              success: function (r) {
                (e.oAuthType[n] = t
                  .$XML(r)
                  .find("sessionIDVersion")
                  .eq(0)
                  .text()),
                  i();
              },
              error: function (t) {
                t > 500 && (e.oAuthType[n] = t), i(t);
              },
            };
          a.getSessionCap(n, r, s, o, u);
        }),
          (this.setDeviceInfo = function (e, t, n, r, o) {
            var t = new s();
            return (
              (t.szIP = n),
              2 == r
                ? ((t.szHttpProtocol = "https://"), (t.iHttpsPort = o))
                : ((t.szHttpProtocol = "http://"), (t.iHttpPort = o)),
              (t.iCGIPort = o),
              (t.szDeviceIdentify = n + "_" + o),
              (t.iDeviceProtocol = x),
              (t.oProtocolInc = e),
              t
            );
          }),
          (this.successV1cb = function (e, n, r, s, o, i, a, u) {
            (n = this.setDeviceInfo(e, n, r, s, o)),
              (n.szAuth = t.$XML(i).find("sessionID").eq(0).text()),
              Q(n),
              N("使用%s协议登录成功", x),
              J(n.szDeviceIdentify, a, u),
              (n.sessionFailed = 0),
              et(n);
            var c = jQuery.extend({}, n);
            P.push(c),
              (c.sesstionTimer = setInterval(function () {
                e.sessionHeartbeat(
                  c,
                  function () {
                    c.sessionFailed = 0;
                  },
                  function () {
                    c.sessionFailed++,
                      c.sessionFailed >= 5 &&
                        (window.PluginEventHandler(null, _, c.szDeviceIdentify),
                        clearInterval(c.sesstionTimer));
                  }
                );
              }, 3e4));
          }),
          (this.successV2cb = function (e, t, n, r, s, o, i, a) {
            (t = this.setDeviceInfo(e, t, n, r, s)),
              (t.szAuth = O(t, t.szDeviceIdentify)),
              Q(t),
              N("使用%s协议登录成功", x),
              (document.cookie = "domain='10.18.99.194';path=/;"),
              et(t),
              J(t.szDeviceIdentify, i, a),
              (t.sessionFailed = 0);
            var u = jQuery.extend({}, t);
            P.push(u),
              (u.sesstionTimer = setInterval(function () {
                e.sessionHeartbeat(
                  u,
                  function () {
                    u.sessionFailed = 0;
                  },
                  function () {
                    u.sessionFailed++,
                      u.sessionFailed >= 5 &&
                        (window.PluginEventHandler(null, _, u.szDeviceIdentify),
                        clearInterval(u.sesstionTimer));
                  }
                );
              }, 3e4));
          }),
          (this.I_LoginV1 = function (e, t, n, r, s, o, i, a) {
            var u = this,
              c = { success: null, error: null };
            return (
              S.extend(c, {
                success: function (c) {
                  var l = { success: null, error: null };
                  S.extend(l, {
                    success: function (c) {
                      a.success &&
                        (a.success(c), u.successV1cb(e, t, n, r, s, c, i, o));
                    },
                    error: function (e, t) {
                      a.error && a.error(e, t);
                    },
                  }),
                    e.sessionLogin(n, r, s, o, i, c, l);
                },
                error: function (e, t) {
                  a.error && a.error(e, t);
                },
              }),
              c
            );
          }),
          (this.I_LoginV2 = function (e, t, n, r, s, o, i, a, u) {
            var c = { success: null, error: null },
              l = this;
            return (
              S.extend(c, {
                success: function (c) {
                  var d = { success: null, error: null };
                  S.extend(d, {
                    success: function (e) {
                      l.successV2cb(t, n, r, s, o, e, a, i),
                        u.success && u.success(e);
                    },
                    error: function (e, t) {
                      u.error && u.error(e, t);
                    },
                  }),
                    t.sessionV2Login(e, r, s, o, i, a, c, d);
                },
                error: function (e, t) {
                  u.error && u.error(e, t);
                },
              }),
              c
            );
          }),
          (this.I_Login = function (e, t, n, r, o, i) {
            var a = e + "_" + n,
              u = this.findDeviceIndexByIP(a);
            if (-1 != u) return N("设备已经登录过"), -1;
            var c = v,
              l = x;
            if (
              (U(i.cgi) ||
                (x == i.cgi ? ((c = v), (l = x)) : ((c = C), (l = D))),
              ct())
            )
              if (x == l) {
                var d = new s();
                this.getAuthType(d, e, t, n, r, function () {
                  var s = d.oAuthType[e];
                  if (s > 2) i.error && i.error(s);
                  else if (2 > s) {
                    var a = this.I_LoginV1(c, d, e, t, n, r, o, i);
                    c.getSessionCap(e, t, n, r, a);
                  } else {
                    var u = MD5(new Date().getTime().toString()).substring(
                      0,
                      8
                    );
                    u = parseInt(u.replace("#", ""), 16)
                      .toString()
                      .substring(0, 8);
                    var a = this.I_LoginV2(u, c, d, e, t, n, r, o, i);
                    c.getSessionV2Cap(u, e, t, n, r, a);
                  }
                });
              } else i.error && i.error(403, pt());
            else {
              var p = "";
              if (x == l) {
                p = S.Base64.encode(":" + r + ":" + o);
                var f = { success: null, error: null };
                S.extend(f, i),
                  S.extend(f, {
                    error: function (s, a) {
                      (p = S.Base64.encode(r + ":" + o)), (l = x), (c = v);
                      var u = { success: null, error: null };
                      S.extend(u, i),
                        S.extend(u, {
                          error: function () {
                            if (!U(i.cgi))
                              return i.error && i.error(s, a), void 0;
                            (p = S.Base64.encode(":" + r + ":" + o)),
                              (l = D),
                              (c = C);
                            var u = { success: null, error: null };
                            S.extend(u, i),
                              S.extend(u, {
                                error: function (s, a) {
                                  (p = S.Base64.encode(r + ":" + o)),
                                    (l = D),
                                    (c = C);
                                  var u = { success: null, error: null };
                                  S.extend(u, i),
                                    S.extend(u, {
                                      error: function () {
                                        i.error && i.error(s, a);
                                      },
                                    }),
                                    ft(e, t, n, p, l, c, u);
                                },
                              }),
                              ft(e, t, n, p, l, c, u);
                          },
                        }),
                        ft(e, t, n, p, l, c, u);
                    },
                  }),
                  ft(e, t, n, p, l, c, f);
              } else {
                (p = S.Base64.encode(":" + r + ":" + o)), (l = D), (c = C);
                var f = { success: null, error: null };
                S.extend(f, i),
                  S.extend(f, {
                    error: function (s, a) {
                      (p = S.Base64.encode(r + ":" + o)), (l = D), (c = C);
                      var u = { success: null, error: null };
                      S.extend(u, i),
                        S.extend(u, {
                          error: function () {
                            i.error && i.error(s, a);
                          },
                        }),
                        ft(e, t, n, p, l, c, u);
                    },
                  }),
                  ft(e, t, n, p, l, c, f);
              }
            }
          }),
          (this.I_Logout = function (e) {
            var t = this.findDeviceIndexByIP(e);
            if (-1 != t) {
              if (ct()) {
                var n = P[t];
                clearInterval(n.sesstionTimer),
                  n.oProtocolInc.sessionLogout(n, {});
              }
              return P.splice(t, 1), 0;
            }
            return -1;
          }),
          (this.I_GetAudioInfo = function (e, t) {
            var n = this.findDeviceIndexByIP(e);
            if (-1 != n) {
              var r = P[n],
                s = { success: null, error: null };
              S.extend(s, t), r.oProtocolInc.getAudioInfo(r, s);
            }
          }),
          (this.I_GetDeviceInfo = function (e, t) {
            var n = this.findDeviceIndexByIP(e);
            if (-1 != n) {
              var r = P[n],
                s = { success: null, error: null };
              S.extend(s, t), r.oProtocolInc.getDeviceInfo(r, s);
            }
          }),
          (this.I_GetAnalogChannelInfo = function (e, t) {
            var n = this.findDeviceIndexByIP(e);
            if (-1 != n) {
              var r = P[n],
                s = { success: null, error: null };
              S.extend(s, t), r.oProtocolInc.getAnalogChannelInfo(r, s);
            }
          }),
          (this.I_GetSecurityVersion = function (e, t) {
            var n = this.findDeviceIndexByIP(e);
            if (-1 != n) {
              var r = P[n],
                s = { success: null, error: null };
              S.extend(s, t), r.oProtocolInc.getSecurityVersion(r, s);
            }
          }),
          (this.I_GetDigitalChannelInfo = function (e, t) {
            var n = this.findDeviceIndexByIP(e);
            if (-1 != n) {
              var r = P[n],
                s = { success: null, error: null };
              S.extend(s, t), r.oProtocolInc.getDigitalChannelInfo(r, s);
            }
          }),
          (this.I_GetZeroChannelInfo = function (e, t) {
            var n = this.findDeviceIndexByIP(e);
            if (-1 != n) {
              var r = P[n],
                s = { success: null, error: null };
              S.extend(s, t), r.oProtocolInc.getZeroChannelInfo(r, s);
            }
          }),
          (this.getStream = function (e, t, n) {
            var r = $.Deferred();
            return (
              ct() &&
                p.JS_Play(e, t, n).then(
                  function () {
                    addToWndSet(), r.resolve();
                  },
                  function () {
                    r.reject();
                  }
                ),
              r
            );
          }),
          (this.I_StartRealPlay = function (e, n) {
            var r = this.findDeviceIndexByIP(e),
              s = "",
              o = "",
              i = -1,
              a = 0,
              u = 0,
              c = !1,
              l = {
                iWndIndex: f,
                iStreamType: 1,
                iChannelID: 1,
                bZeroChannel: !1,
              };
            if ((S.extend(l, n), -1 != r)) {
              at(P[r]);
              var d = P[r];
              if (ct()) {
                if (!d.bSupportWebsocket)
                  return n.error && n.error(403, pt()), void 0;
                s = d.oProtocolInc.CGI.startWsRealPlay;
                var p = location.protocol;
                (o = /^(https)(.*)$/.test(p) ? "wss://" : "ws://"),
                  (d.iWSPort = U(l.iWSPort) ? 7681 : l.iWSPort),
                  (i = d.iWSPort),
                  (u = l.iStreamType),
                  (a =
                    l.iChannelID <= d.iAnalogChannelNum
                      ? l.iChannelID
                      : d.oStreamCapa.iIpChanBase +
                        parseInt(l.iChannelID, 10) -
                        d.iAnalogChannelNum -
                        1),
                  (c = !0);
              } else {
                var h = parseInt(
                  t.$XML(g).find("ProtocolType").eq(0).text(),
                  10
                );
                h == H && d.oStreamCapa.bSupportShttpPlay
                  ? (N("SHTTP RealPlay"),
                    (s = d.oProtocolInc.CGI.startShttpRealPlay),
                    (o = "http://"),
                    (u = l.iStreamType - 1),
                    (a =
                      l.iChannelID <= d.iAnalogChannelNum
                        ? l.iChannelID
                        : d.oStreamCapa.iIpChanBase +
                          parseInt(l.iChannelID, 10) -
                          d.iAnalogChannelNum -
                          1),
                    (c = !0),
                    U(l.iPort)
                      ? "https://" == d.szHttpProtocol
                        ? (-1 == d.iHttpPort && (d.iHttpPort = nt(d).iHttpPort),
                          (i = d.iHttpPort))
                        : (i = d.iCGIPort)
                      : ((d.iHttpPort = l.iPort), (i = l.iPort)))
                  : (N("RTSP RealPlay"),
                    (s = d.oProtocolInc.CGI.startRealPlay),
                    (o = "rtsp://"),
                    (u = l.iStreamType),
                    (a = l.iChannelID),
                    U(l.iRtspPort) || (d.iRtspPort = l.iRtspPort),
                    -1 == d.iRtspPort && (d.iRtspPort = nt(d).iRtspPort),
                    (i = d.iRtspPort));
              }
              if (-1 == i)
                return N("获取端口号失败"), n.error && n.error(), void 0;
              S.extend(l, {
                urlProtocol: o,
                cgi: s,
                iPort: i,
                iStreamType: u,
                iChannelID: a,
              }),
                (r = this.findWndIndexByIndex(l.iWndIndex));
              var m = this;
              -1 == r &&
                d.oProtocolInc.startRealPlay(d, l).then(
                  function () {
                    r = m.findWndIndexByIndex(l.iWndIndex);
                    var e = I[r];
                    (e.bShttpIPChannel = c), n.success && n.success();
                  },
                  function () {
                    ct() || (d.iRtspPort = -1), n.error && n.error();
                  }
                );
            } else n.error && n.error();
          }),
          (this.I_CloseWin = function (e) {
            var t = this.findWndIndexByIndex(e);
            I.splice(t, 1);
          }),
          (this.I_Stop = function (e) {
            var t = { iWndIndex: f };
            j(e) ? S.extend(t, e) : U(e) || (t.iWndIndex = e);
            var n = this.findWndIndexByIndex(t.iWndIndex);
            if (-1 != n) {
              var r = I[n];
              if (
                (r.bRecord && (ct() || p.HWP_StopSave(r.iIndex)),
                r.bSound && (ct() || p.HWP_CloseSound()),
                r.bEZoom && (ct() || p.HWP_DisableZoom(r.iIndex)),
                ct())
              )
                p.JS_Stop(t.iWndIndex).then(
                  function () {
                    I.splice(n, 1), t.success && t.success();
                  },
                  function () {
                    t.error && t.error();
                  }
                );
              else {
                var s = p.HWP_Stop(t.iWndIndex);
                0 == s
                  ? (I.splice(n, 1), t.success && t.success())
                  : t.error && t.error();
              }
            } else t.error && t.error();
          }),
          (this.I_OpenSound = function (e) {
            e = U(e) ? f : e;
            var t = this.findWndIndexByIndex(e),
              n = -1;
            if (-1 != t) {
              var r = I[t];
              r.bSound ||
                ((n = ct() ? p.JS_OpenSound(e) : p.HWP_OpenSound(e)),
                0 == n && (r.bSound = !0));
            }
            return n;
          }),
          (this.I_CloseSound = function (e) {
            e = U(e) ? f : e;
            var t = this.findWndIndexByIndex(e),
              n = -1;
            if (-1 != t) {
              var r = I[t];
              r.bSound &&
                ((n = ct() ? p.JS_CloseSound() : p.HWP_CloseSound()),
                0 == n && (r.bSound = !1));
            }
            return n;
          }),
          (this.I_SetVolume = function (e, t) {
            var n = -1;
            if (((e = parseInt(e, 10)), isNaN(e))) return n;
            if (0 > e || e > 100) return n;
            t = U(t) ? f : t;
            var r = this.findWndIndexByIndex(t);
            return (
              -1 != r &&
                (ct()
                  ? (p.JS_SetVolume(t, e), (n = 0))
                  : (n = p.HWP_SetVolume(t, e))),
              n
            );
          }),
          (this.I2_CapturePic = function (e, t) {
            var n = { iWndIndex: f, bDateDir: !0 };
            j(t) ? S.extend(n, t) : U(t) || (n.iWndIndex = t);
            var r = this.findWndIndexByIndex(n.iWndIndex),
              s = -1,
              o = $.Deferred();
            if (-1 != r)
              if (ct()) {
                var i = "JPEG";
                ".jpg" === e.slice(-4).toLowerCase()
                  ? (e = e.slice(0, -4))
                  : ".jpeg" === e.slice(-5).toLowerCase()
                  ? (e = e.slice(0, -5))
                  : ".bmp" === e.slice(-4).toLowerCase() &&
                    ((e = e.slice(0, -4)), (i = "BMP")),
                  p.JS_CapturePicture(n.iWndIndex, e, i).then(
                    function () {
                      o.resolve();
                    },
                    function () {
                      o.reject();
                    }
                  );
              } else
                ".jpg" === e.slice(-4).toLowerCase()
                  ? (e = e.slice(0, -4))
                  : ".jpeg" === e.slice(-5).toLowerCase() &&
                    (e = e.slice(0, -5)),
                  (s = p.HWP_CapturePicture(n.iWndIndex, e, n.bDateDir)),
                  0 === s ? o.resolve() : o.reject();
            else o.reject();
            return o;
          }),
          (this.I2_CapturePicData = function (e) {
            var t = { iWndIndex: f, bDateDir: !0 };
            j(e) ? S.extend(t, e) : U(e) || (t.iWndIndex = e);
            var n = this.findWndIndexByIndex(t.iWndIndex);
            if (-1 != n) {
              var r = $.Deferred();
              ct()
                ? p.JS_CapturePictureData(t.iWndIndex).then(
                    function (e) {
                      r.resolve(e);
                    },
                    function (e) {
                      N(e), r.reject();
                    }
                  )
                : r.reject();
            } else r.reject();
            return r;
          }),
          (this.I_StartRecord = function (e, t) {
            var n = { iWndIndex: f, bDateDir: !0 };
            j(t) ? S.extend(n, t) : U(t) || (n.iWndIndex = t);
            var r = this.findWndIndexByIndex(n.iWndIndex);
            if (-1 != r) {
              var s = I[r];
              if (s.bRecord) n.error && n.error();
              else if (ct()) {
                var o = S.browser();
                o.chrome
                  ? p.JS_StartSave(n.iWndIndex, e).then(
                      function () {
                        (s.bRecord = !0), n.success && n.success();
                      },
                      function () {
                        n.error && n.error();
                      }
                    )
                  : n.error && n.error();
              } else {
                var i = p.HWP_StartSave(n.iWndIndex, e, n.bDateDir);
                0 == i
                  ? ((s.bRecord = !0), n.success && n.success())
                  : n.error && n.error();
              }
            } else n.error && n.error();
          }),
          (this.I_StopRecord = function (e) {
            var t = { iWndIndex: f };
            j(e) ? S.extend(t, e) : U(e) || (t.iWndIndex = e);
            var n = this.findWndIndexByIndex(t.iWndIndex);
            if (-1 != n) {
              var r = I[n];
              if (r.bRecord)
                if (ct()) {
                  var s = S.browser();
                  s.chrome
                    ? p.JS_StopSave(t.iWndIndex).then(
                        function () {
                          (r.bRecord = !1), t.success && t.success();
                        },
                        function () {
                          t.error && t.error();
                        }
                      )
                    : t.error && t.error();
                } else {
                  var o = p.HWP_StopSave(t.iWndIndex);
                  0 == o
                    ? ((r.bRecord = !1), t.success && t.success())
                    : t.error && t.error();
                }
              else t.error && t.error();
            } else t.error && t.error();
          }),
          (this.I_StartVoiceTalk = function (e, t) {
            if (isNaN(parseInt(t, 10))) return -1;
            var n = this.findDeviceIndexByIP(e),
              r = -1;
            if (-1 != n) {
              var s = P[n];
              s.bVoiceTalk ||
                ((r = ct() ? -1 : s.oProtocolInc.startVoiceTalk(s, t)),
                0 == r && (P[n].bVoiceTalk = !0));
            }
            return r;
          }),
          (this.I_StopVoiceTalk = function () {
            var e = -1;
            if (!ct()) {
              e = p.HWP_StopVoiceTalk();
              for (var t = 0, n = P.length; n > t; t++)
                if (P[t].bVoiceTalk) {
                  P[t].bVoiceTalk = !1;
                  break;
                }
            }
            return e;
          }),
          (this.I_PTZControl = function (e, t, n) {
            var r = { iWndIndex: f, iPTZIndex: e, iPTZSpeed: 4 };
            S.extend(r, n), S.extend(r, { async: !1 });
            var s = this.findWndIndexByIndex(r.iWndIndex);
            if (-1 != s) {
              var o = I[s];
              if (((s = this.findDeviceIndexByIP(o.szIP)), -1 != s)) {
                var i = P[s];
                9 == e
                  ? i.oProtocolInc.ptzAutoControl(i, t, o, r)
                  : i.oProtocolInc.ptzControl(i, t, o, r);
              }
            }
          }),
          (this.I_EnableEZoom = function (e) {
            e = U(e) ? f : e;
            var t = this.findWndIndexByIndex(e),
              n = -1;
            if (-1 != t) {
              var r = I[t];
              r.bEZoom ||
                ((n = ct() ? p.JS_EnableZoom(e) : p.HWP_EnableZoom(e, 0)),
                0 == n && (r.bEZoom = !0));
            }
            return n;
          }),
          (this.I_DisableEZoom = function (e) {
            e = U(e) ? f : e;
            var t = this.findWndIndexByIndex(e),
              n = -1;
            if (-1 != t) {
              var r = I[t];
              r.bEZoom &&
                (ct()
                  ? (n = p.JS_DisableZoom(e))
                  : (p.HWP_DisableZoom(e), (n = 0)),
                0 == n && (r.bEZoom = !1));
            }
            return n;
          }),
          (this.I_Enable3DZoom = function (e) {
            e = U(e) ? f : e;
            var t = this.findWndIndexByIndex(e),
              n = -1;
            if (-1 != t) {
              var r = I[t];
              r.b3DZoom ||
                (ct()
                  ? ((n = 0),
                    p.JS_Enable3DZoom(e, function (e) {
                      window.ZoomInfoCallback(e);
                    }))
                  : (n = p.HWP_EnableZoom(e, 1)),
                0 == n && (r.b3DZoom = !0));
            }
            return n;
          }),
          (this.I_Disable3DZoom = function (e) {
            e = U(e) ? f : e;
            var t = this.findWndIndexByIndex(e),
              n = -1;
            if (-1 != t) {
              var r = I[t];
              r.b3DZoom &&
                (ct()
                  ? (p.JS_Disable3DZoom(e), (n = 0))
                  : (p.HWP_DisableZoom(e), (n = 0)),
                0 == n && (r.b3DZoom = !1));
            }
            return n;
          }),
          (this.I_FullScreen = function (e) {
            ct() ? p.JS_FullScreenSingle(f) : p.HWP_FullScreenDisplay(e);
          }),
          (this.I_SetPreset = function (e, t) {
            var n = { iWndIndex: f, iPresetID: e };
            S.extend(n, t);
            var r = this.findWndIndexByIndex(n.iWndIndex);
            if (-1 != r) {
              var s = I[r];
              if (((r = this.findDeviceIndexByIP(s.szIP)), -1 != r)) {
                var o = P[r];
                o.oProtocolInc.setPreset(o, s, n);
              }
            }
          }),
          (this.I_GoPreset = function (e, t) {
            var n = { iWndIndex: f, iPresetID: e };
            S.extend(n, t);
            var r = this.findWndIndexByIndex(n.iWndIndex);
            if (-1 != r) {
              var s = I[r];
              if (((r = this.findDeviceIndexByIP(s.szIP)), -1 != r)) {
                var o = P[r];
                o.oProtocolInc.goPreset(o, s, n);
              }
            }
          }),
          (this.I_RecordSearch = function (e, t, n, r, s) {
            var o = this.findDeviceIndexByIP(e);
            if (-1 != o) {
              var i = P[o],
                a = {
                  iChannelID: t,
                  szStartTime: n,
                  szEndTime: r,
                  iSearchPos: 0,
                  iStreamType: 1,
                  success: null,
                  error: null,
                };
              S.extend(a, s), i.oProtocolInc.recordSearch(i, a);
            }
          }),
          (this.I_StartPlayback = function (e, n) {
            var r = this.findDeviceIndexByIP(e),
              s = "",
              o = "",
              i = -1,
              a = 1,
              u = 0,
              c = S.dateFormat(new Date(), "yyyy-MM-dd"),
              l = {
                iWndIndex: f,
                iStreamType: 1,
                iChannelID: 1,
                szStartTime: c + " 00:00:00",
                szEndTime: c + " 23:59:59",
              };
            if ((S.extend(l, n), -1 != r)) {
              at(P[r]);
              var d = P[r];
              if (ct()) {
                if (!d.bSupportWebsocket)
                  return n.error && n.error(403, pt()), void 0;
                if (!U(l.oTransCodeParam)) return n.error && n.error(), void 0;
                s = d.oProtocolInc.CGI.startWsPlayback;
                var p = location.protocol;
                (o = /^(https)(.*)$/.test(p) ? "wss://" : "ws://"),
                  (d.iWSPort = U(l.iWSPort) ? 7681 : l.iWSPort),
                  (i = d.iWSPort),
                  (u = l.iStreamType),
                  (a =
                    l.iChannelID <= d.iAnalogChannelNum
                      ? l.iChannelID
                      : d.oStreamCapa.iIpChanBase +
                        parseInt(l.iChannelID, 10) -
                        d.iAnalogChannelNum -
                        1),
                  (a = 100 * a + u);
              } else {
                var h = parseInt(
                  t.$XML(g).find("ProtocolType").eq(0).text(),
                  10
                );
                h == H && d.oStreamCapa.bSupportShttpPlay
                  ? ((s = U(l.oTransCodeParam)
                      ? d.oProtocolInc.CGI.startShttpPlayback
                      : d.oProtocolInc.CGI.startTransCodePlayback),
                    (o = "http://"),
                    (u = l.iStreamType - 1),
                    (a =
                      l.iChannelID <= d.iAnalogChannelNum
                        ? l.iChannelID
                        : d.oStreamCapa.iIpChanBase +
                          parseInt(l.iChannelID, 10) -
                          d.iAnalogChannelNum -
                          1),
                    d.bSupportSubStreamPlayback && (a = 100 * a + u),
                    U(l.iPort)
                      ? "https://" == d.szHttpProtocol
                        ? (-1 == d.iHttpPort && (d.iHttpPort = nt(d).iHttpPort),
                          (i = d.iHttpPort))
                        : (i = d.iCGIPort)
                      : ((d.iHttpPort = l.iPort), (i = l.iPort)))
                  : ((s = d.oProtocolInc.CGI.startPlayback),
                    (o = "rtsp://"),
                    (u = l.iStreamType),
                    (a = 100 * l.iChannelID + u),
                    U(l.iRtspPort) || (d.iRtspPort = l.iRtspPort),
                    -1 == d.iRtspPort && (d.iRtspPort = nt(d).iRtspPort),
                    (i = d.iRtspPort));
              }
              if (-1 == i)
                return N("获取端口号失败"), n.error && n.error(), void 0;
              S.extend(l, { urlProtocol: o, cgi: s, iPort: i, iChannelID: a }),
                (r = this.findWndIndexByIndex(l.iWndIndex)),
                -1 == r &&
                  (ct()
                    ? ((l.szStartTime = l.szStartTime.replace(" ", "T") + "Z"),
                      (l.szEndTime = l.szEndTime.replace(" ", "T") + "Z"),
                      d.oProtocolInc.startPlayback(d, l).then(
                        function () {
                          n.success && n.success();
                        },
                        function () {
                          n.error && n.error();
                        }
                      ))
                    : ((l.szStartTime =
                        l.szStartTime.replace(/[-:]/g, "").replace(" ", "T") +
                        "Z"),
                      (l.szEndTime =
                        l.szEndTime.replace(/[-:]/g, "").replace(" ", "T") +
                        "Z"),
                      d.oProtocolInc.startPlayback(d, l).then(
                        function () {
                          n.success && n.success();
                        },
                        function () {
                          (d.iRtspPort = -1), n.error && n.error();
                        }
                      )));
            } else n.error && n.error();
          }),
          (this.I_ReversePlayback = function (e, n) {
            var r = this.findDeviceIndexByIP(e),
              s = -1,
              o = "",
              i = "",
              a = -1,
              u = -1,
              c = 0,
              l = S.dateFormat(new Date(), "yyyy-MM-dd"),
              d = {
                iWndIndex: f,
                iStreamType: 1,
                iChannelID: 1,
                szStartTime: l + " 00:00:00",
                szEndTime: l + " 23:59:59",
              };
            if ((S.extend(d, n), -1 != r)) {
              at(P[r]);
              var p = P[r];
              if (ct()) return s;
              var h = parseInt(t.$XML(g).find("ProtocolType").eq(0).text(), 10);
              if (
                (h == H && p.oStreamCapa.bSupportShttpPlay
                  ? ((o = p.oProtocolInc.CGI.startShttpReversePlayback),
                    (i = "http://"),
                    (c = d.iStreamType - 1),
                    (u =
                      d.iChannelID <= p.iAnalogChannelNum
                        ? d.iChannelID
                        : p.oStreamCapa.iIpChanBase +
                          parseInt(d.iChannelID, 10) -
                          p.iAnalogChannelNum -
                          1),
                    (u = 100 * u + c),
                    U(d.iPort)
                      ? "https://" == p.szHttpProtocol
                        ? (-1 == p.iHttpPort && (p.iHttpPort = nt(p).iHttpPort),
                          (a = p.iHttpPort))
                        : (a = p.iCGIPort)
                      : ((p.iHttpPort = d.iPort), (a = d.iPort)))
                  : ((o = p.oProtocolInc.CGI.startPlayback),
                    (i = "rtsp://"),
                    (c = d.iStreamType),
                    (u = 100 * d.iChannelID + c),
                    U(d.iRtspPort) || (p.iRtspPort = d.iRtspPort),
                    -1 == p.iRtspPort && (p.iRtspPort = nt(p).iRtspPort),
                    (a = p.iRtspPort)),
                -1 == a)
              )
                return N("获取端口号失败"), s;
              S.extend(d, { urlProtocol: i, cgi: o, iPort: a, iChannelID: u }),
                (r = this.findWndIndexByIndex(d.iWndIndex)),
                -1 == r &&
                  ((d.szStartTime =
                    d.szStartTime.replace(/[-:]/g, "").replace(" ", "T") + "Z"),
                  (d.szEndTime =
                    d.szEndTime.replace(/[-:]/g, "").replace(" ", "T") + "Z"),
                  (s = p.oProtocolInc.reversePlayback(p, d)));
            }
            return -1 == s && (p.iRtspPort = -1), s;
          }),
          (this.I_Frame = function (e) {
            var t = { iWndIndex: f };
            j(e) ? S.extend(t, e) : U(e) || (t.iWndIndex = e);
            var n = this.findWndIndexByIndex(t.iWndIndex);
            if (-1 != n) {
              var r = I[n],
                s = r.iPlayStatus;
              if (s == A || s == L)
                if (ct())
                  p.JS_FrameForward(t.iWndIndex).then(
                    function () {
                      (r.iPlayStatus = L), t.success && t.success();
                    },
                    function () {
                      t.error && t.error();
                    }
                  );
                else {
                  var o = p.HWP_FrameForward(t.iWndIndex);
                  0 == o
                    ? ((r.iPlayStatus = L), t.success && t.success())
                    : t.error && t.error();
                }
              else t.error && t.error();
            } else t.error && t.error();
          }),
          (this.I_Pause = function (e) {
            var t = { iWndIndex: f };
            j(e) ? S.extend(t, e) : U(e) || (t.iWndIndex = e);
            var n = this.findWndIndexByIndex(t.iWndIndex);
            if (-1 != n) {
              var r = I[n],
                s = r.iPlayStatus,
                o = -1;
              if (s == A) o = M;
              else {
                if (s != q) return t.error && t.error(), void 0;
                o = R;
              }
              if (ct())
                p.JS_Pause(t.iWndIndex).then(
                  function () {
                    (r.iPlayStatus = o), t.success && t.success();
                  },
                  function () {
                    t.error && t.error();
                  }
                );
              else {
                var i = p.HWP_Pause(t.iWndIndex);
                0 == i
                  ? ((r.iPlayStatus = o), t.success && t.success())
                  : t.error && t.error();
              }
            } else t.error && t.error();
          }),
          (this.I_Resume = function (e) {
            var t = { iWndIndex: f };
            j(e) ? S.extend(t, e) : U(e) || (t.iWndIndex = e);
            var n = this.findWndIndexByIndex(t.iWndIndex);
            if (-1 != n) {
              var r = I[n],
                s = r.iPlayStatus,
                o = -1;
              if (s == M || s == L) o = A;
              else {
                if (s != R) return t.error && t.error(), void 0;
                o = q;
              }
              if (ct())
                p.JS_Resume(t.iWndIndex).then(
                  function () {
                    (r.iPlayStatus = o), t.success && t.success();
                  },
                  function () {
                    t.error && t.error();
                  }
                );
              else {
                var i = p.HWP_Resume(t.iWndIndex);
                0 == i
                  ? ((r.iPlayStatus = o), t.success && t.success())
                  : t.error && t.error();
              }
            } else t.error && t.error();
          }),
          (this.I_PlaySlow = function (e) {
            var t = { iWndIndex: f };
            j(e) ? S.extend(t, e) : U(e) || (t.iWndIndex = e);
            var n = this.findWndIndexByIndex(t.iWndIndex);
            if (-1 != n) {
              var r = I[n];
              if (r.iPlayStatus == A)
                if (ct()) {
                  var s = p.JS_GetWndStatus(t.iWndIndex);
                  s.iRate <= -4
                    ? t.error && t.error()
                    : p.JS_Slow(t.iWndIndex).then(
                        function () {
                          t.success && t.success();
                        },
                        function () {
                          t.error && t.error();
                        }
                      );
                } else {
                  var o = p.HWP_Slow(t.iWndIndex);
                  0 == o ? t.success && t.success() : t.error && t.error();
                }
              else t.error && t.error();
            } else t.error && t.error();
          }),
          (this.I_PlayFast = function (e) {
            var t = { iWndIndex: f };
            j(e) ? S.extend(t, e) : U(e) || (t.iWndIndex = e);
            var n = this.findWndIndexByIndex(t.iWndIndex);
            if (-1 != n) {
              var r = I[n];
              if (r.iPlayStatus == A)
                if (ct()) {
                  var s = p.JS_GetWndStatus(t.iWndIndex);
                  s.iRate >= 8
                    ? t.error && t.error()
                    : p.JS_Fast(t.iWndIndex).then(
                        function () {
                          t.success && t.success();
                        },
                        function () {
                          t.error && t.error();
                        }
                      );
                } else {
                  var o = p.HWP_Fast(t.iWndIndex);
                  0 == o ? t.success && t.success() : t.error && t.error();
                }
              else t.error && t.error();
            } else t.error && t.error();
          }),
          (this.I_GetOSDTime = function (e) {
            var t = { iWndIndex: f };
            j(e) ? S.extend(t, e) : U(e) || (t.iWndIndex = e);
            var n = this.findWndIndexByIndex(t.iWndIndex);
            if (-1 != n) {
              if (ct())
                p.JS_GetOSDTime(t.iWndIndex).then(
                  function (e) {
                    if (t.success) {
                      var n = S.dateFormat(
                        new Date(1e3 * e),
                        "yyyy-MM-dd hh:mm:ss"
                      );
                      t.success(n);
                    }
                  },
                  function () {
                    t.error && t.error();
                  }
                );
              else if (t.success) {
                var r = p.HWP_GetOSDTime(t.iWndIndex),
                  s = S.dateFormat(new Date(1e3 * r), "yyyy-MM-dd hh:mm:ss");
                t.success(s);
              }
            } else t.error && t.error();
          }),
          (this.I_StartDownloadRecord = function (e, t, n, r) {
            var s = this.findDeviceIndexByIP(e),
              o = -1;
            if (-1 != s) {
              var i = P[s],
                a = { szPlaybackURI: t, szFileName: n, bDateDir: !0 };
              U(r) || S.extend(a, r),
                (o = i.oProtocolInc.startDownloadRecord(i, a));
            }
            return o;
          }),
          (this.I_StartDownloadRecordByTime = function (e, t, n, r, s, o) {
            var i = this.findDeviceIndexByIP(e),
              a = -1;
            if (-1 != i) {
              var u = P[i];
              t =
                t.split("?")[0] +
                "?starttime=" +
                r.replace(" ", "T") +
                "Z&endtime=" +
                s.replace(" ", "T") +
                "Z";
              var c = { szPlaybackURI: t, szFileName: n, bDateDir: !0 };
              U(o) || S.extend(c, o),
                (a = u.oProtocolInc.startDownloadRecord(u, c));
            }
            return a;
          }),
          (this.I_GetDownloadStatus = function (e) {
            var t = -1;
            return ct()
              ? t
              : ((t = p.HWP_GetDownloadStatus(e)), 1 == t && (t = -1), t);
          }),
          (this.I_GetDownloadProgress = function (e) {
            return ct() ? -1 : p.HWP_GetDownloadProgress(e);
          }),
          (this.I_StopDownloadRecord = function (e) {
            return ct() ? -1 : p.HWP_StopDownload(e);
          }),
          (this.I_ExportDeviceConfig = function (e, t) {
            var n = this.findDeviceIndexByIP(e),
              r = -1;
            if (-1 != n) {
              var s = P[n];
              r = s.oProtocolInc.exportDeviceConfig(s, t);
            }
            return r;
          }),
          (this.I_ImportDeviceConfig = function (e, t, n) {
            var r = this.findDeviceIndexByIP(e),
              s = -1;
            if (-1 != r) {
              var o = P[r],
                i = { szFileName: t };
              s = o.oProtocolInc.importDeviceConfig(o, i, n);
            }
            return s;
          }),
          (this.I_RestoreDefault = function (e, t, n) {
            var r = { success: null, error: null };
            S.extend(r, n);
            var s = this.findDeviceIndexByIP(e);
            if (-1 != s) {
              var o = P[s];
              o.oProtocolInc.restore(o, t, r);
            }
          }),
          (this.I_Restart = function (e, t) {
            var n = this.findDeviceIndexByIP(e),
              r = { success: null, error: null };
            if ((S.extend(r, t), -1 != n)) {
              var s = P[n];
              s.oProtocolInc.restart(s, r);
            }
          }),
          (this.I_Reconnect = function (e, t) {
            var n = this.findDeviceIndexByIP(e),
              r = { success: null, error: null };
            if ((S.extend(r, t), -1 != n)) {
              var s = P[n];
              s.oProtocolInc.login(s.szIP, s.iCGIPort, s.szAuth, r);
            }
          }),
          (this.I_StartUpgrade = function (e, t) {
            var n = this.findDeviceIndexByIP(e),
              r = -1;
            if (-1 != n) {
              var s = P[n],
                o = { szFileName: t };
              return ct() ? r : s.oProtocolInc.startUpgrade(s, o);
            }
            return r;
          }),
          (this.I2_StartUpgrade = function (e, t) {
            var n = this.findDeviceIndexByIP(e);
            if (-1 != n) {
              var r = P[n],
                s = { szFileName: t };
              return r.oProtocolInc.asyncstartUpgrade(r, s);
            }
          }),
          (this.I_UpgradeStatus = function () {
            return ct() ? p.JS_UpgradeStatus() : p.HWP_UpgradeStatus();
          }),
          (this.I_UpgradeProgress = function () {
            return ct() ? p.JS_UpgradeProgress() : p.HWP_UpgradeProgress();
          }),
          (this.I_StopUpgrade = function () {
            return ct() ? -1 : p.HWP_StopUpgrade();
          }),
          (this.I_CheckPluginInstall = function () {
            var e = -1,
              t = S.browser();
            if (ct()) e = 0;
            else if (t.msie)
              try {
                new ActiveXObject(
                  "WebVideoKitActiveX.WebVideoKitActiveXCtrl.1"
                ),
                  (e = 0);
              } catch (n) {}
            else
              for (var r = 0, s = navigator.mimeTypes.length; s > r; r++)
                if (
                  "application/webvideo-plugin-kit" ==
                  navigator.mimeTypes[r].type.toLowerCase()
                ) {
                  e = 0;
                  break;
                }
            return e;
          }),
          (this.I_CheckPluginVersion = function () {
            return ct() ? 0 : p.HWP_CheckPluginUpdate(B) ? -1 : 0;
          }),
          (this.I_SendHTTPRequest = function (e, t, n) {
            var r = this.findDeviceIndexByIP(e);
            if (!(0 > r)) {
              var s = P[r],
                o = new Pt(),
                i = s.szHttpProtocol + s.szIP + ":" + s.iCGIPort + "/" + t,
                a = {
                  type: "GET",
                  url: i,
                  auth: s.szAuth,
                  success: null,
                  error: null,
                };
              S.extend(a, n),
                S.extend(a, {
                  success: function (e) {
                    n.success && n.success(e);
                  },
                  error: function (e, t) {
                    n.error && n.error(e, t);
                  },
                }),
                o.setRequestParam(a),
                o.submitRequest();
            }
          }),
          (this.I_RemoteConfig = function (e, t) {
            var n = this.findDeviceIndexByIP(e),
              r = -1,
              s = -1;
            if (ct()) return r;
            var o = { iLan: 0, iDevicePort: -1, iType: 0 };
            if ((S.extend(o, t), -1 != n)) {
              var i = P[n];
              if (-1 == o.iDevicePort)
                if (-1 == i.iDevicePort) {
                  if (
                    ((i.iDevicePort = nt(i).iDevicePort),
                    (s = i.iDevicePort),
                    -1 == s)
                  )
                    return r;
                } else s = i.iDevicePort;
              else s = o.iDevicePort;
              if (":" == S.Base64.decode(i.szAuth)[0])
                var a = S.Base64.decode(i.szAuth).split(":")[1],
                  u = S.Base64.decode(i.szAuth).split(":")[2];
              else
                var a = S.Base64.decode(i.szAuth).split(":")[0],
                  u = S.Base64.decode(i.szAuth).split(":")[1];
              var c =
                "<RemoteInfo><DeviceInfo><DeviceType>" +
                o.iType +
                "</DeviceType>" +
                "<LanType>" +
                o.iLan +
                "</LanType>" +
                "<IP>" +
                i.szIP +
                "</IP>" +
                "<Port>" +
                s +
                "</Port>" +
                "<UName>" +
                a +
                "</UName>" +
                "<PWD>" +
                S.Base64.encode(u) +
                "</PWD></DeviceInfo></RemoteInfo>";
              return p.HWP_ShowRemConfig(c);
            }
            return r;
          }),
          (this.I_ChangeWndNum = function (e) {
            return isNaN(parseInt(e, 10))
              ? -1
              : (ct() ? p.JS_ArrangeWindow(e) : p.HWP_ArrangeWindow(e), 0);
          }),
          (this.I_GetLastError = function () {
            return ct() ? -1 : p.HWP_GetLastError();
          }),
          (this.I_GetWindowStatus = function (e) {
            if (U(e)) {
              var t = [];
              return S.extend(t, I), t;
            }
            var n = this.findWndIndexByIndex(e);
            if (-1 != n) {
              var t = {};
              return S.extend(t, I[n]), t;
            }
            return null;
          }),
          (this.I_GetIPInfoByMode = function (e, t, n, r) {
            return ct() ? "" : p.HWP_GetIpInfoByMode(e, t, n, r);
          }),
          (this.I_SetPlayModeType = function (e) {
            return ct() ? 0 : p.HWP_SetPlayModeType(e);
          }),
          (this.I_SetSnapDrawMode = function (e, t) {
            return ct()
              ? t > -1
                ? p.JS_SetDrawStatus(!0)
                : p.JS_SetDrawStatus(!1)
              : p.HWP_SetSnapDrawMode(e, t);
          }),
          (this.I2_SetSnapPolygonInfo = function (r, s) {
            if (ct()) {
              p.JS_GetPolygonInfo();
              var o = S.loadXML(s),
                a = [];
              for (
                nodeList = t.$XML(o).find("SnapPolygon", !0),
                  i = 0,
                  iLen = nodeList.length;
                iLen > i;
                i++
              ) {
                node = nodeList[i];
                var u = e(
                  t.$XML(node).find("r").eq(0).text(),
                  t.$XML(node).find("g").eq(0).text(),
                  t.$XML(node).find("b").eq(0).text()
                );
                (u = n(u, 6)), (u = "#" + u);
                for (
                  var c = [],
                    l = t.$XML(node).find("point", !0),
                    d = 0,
                    f = l.length;
                  f > d;
                  d++
                )
                  (oNodePoint = l[d]),
                    c.push([
                      500 * t.$XML(oNodePoint).find("x").eq(0).text(),
                      300 * t.$XML(oNodePoint).find("y").eq(0).text(),
                    ]);
                a.push({
                  iPolygonType: 1,
                  id: t.$XML(node).find("id").eq(0).text(),
                  iEditType: 0,
                  aPoint: c,
                  bClosed: !0,
                  szTips: t.$XML(node).find("tips").eq(0).text(),
                  szDrawColor: u,
                  iTranslucent: 0.1,
                });
              }
              return p.JS_SetPolygonInfo(a);
            }
            return p.HWP_SetSnapPolygonInfo(r, s);
          }),
          (this.I_SetSnapPolygonInfo = function (r, s) {
            if (ct()) {
              var o = p.JS_GetPolygonInfo(),
                i = S.loadXML(s),
                a = [];
              for (
                D = t.$XML(i).find("SnapPolygon", !0), d = 0, f = D.length;
                f > d;
                d++
              ) {
                h = D[d];
                var u = e(
                  t.$XML(h).find("r").eq(0).text(),
                  t.$XML(h).find("g").eq(0).text(),
                  t.$XML(h).find("b").eq(0).text()
                );
                (u = n(u, 6)),
                  (u = "#" + u),
                  a.push({
                    id: t.$XML(h).find("id").eq(0).text(),
                    tips: t.$XML(h).find("tips").eq(0).text(),
                    iMaxShapeSupport: o.length + 1,
                    iMaxPointSupport: t
                      .$XML(h)
                      .find("PointNumMax")
                      .eq(0)
                      .text(),
                    iMinPointSupport: t.$XML(h).find("MinClosed").eq(0).text(),
                    style: { szDrawColor: u, iTranslucent: 0.1 },
                  });
              }
              0 === D.length &&
                a.push({
                  iMaxShapeSupport: 1,
                  iMaxPointSupport: 17,
                  iMinPointSupport: 1,
                  style: { szDrawColor: "#FFFF00", iTranslucent: 0.1 },
                });
              var c = [];
              $.each(o, function (e, t) {
                c.push(t.id);
              });
              var l = c.join(",");
              if (((l = "," + l + ","), o.length + a.length > 32)) return -3;
              for (var d = 0, f = a.length; f > d; d++) {
                var h = a[d],
                  P = h.id;
                if (!S.isInt(P)) return -2;
                var I = parseInt(P, 10);
                if (1 > I || I > 32) return -2;
                if (l.indexOf("," + P + ",") > -1) return -4;
                var m = h.tips;
                if (m.length > 32) return -2;
                var v = h.flag;
                if (!v) {
                  var C = h.iMinPointSupport;
                  if (!S.isInt(C)) return -2;
                  var y = parseInt(C, 10);
                  if (4 > y || y > 17) return -2;
                  var g = h.iMaxPointSupport;
                  if (!S.isInt(g)) return -2;
                  var x = parseInt(g, 10);
                  if (y > x || x > 17) return -2;
                }
              }
              return p.JS_SetDrawShapeInfo("Polygon", a[0]);
            }
            var i,
              D,
              d,
              f,
              h,
              P,
              I,
              m,
              C,
              y,
              v,
              g,
              x,
              z = p.HWP_GetSnapPolygonInfo(r);
            (i = S.loadXML(z)), (D = t.$XML(i).find("SnapPolygon", !0));
            var b = D.length,
              c = [];
            for (d = 0, f = D.length; f > d; d++)
              (h = D[d]), c.push(t.$XML(h).find("id").eq(0).text());
            var l = c.join(",");
            if (
              ((l = "," + l + ","),
              (i = S.loadXML(s)),
              (D = t.$XML(i).find("SnapPolygon", !0)),
              b + D.length > 32)
            )
              return -3;
            for (d = 0, f = D.length; f > d; d++) {
              if (
                ((h = D[d]),
                (P = t.$XML(h).find("id").eq(0).text()),
                !S.isInt(P))
              )
                return -2;
              if (((I = parseInt(P, 10)), 1 > I || I > 32)) return -2;
              if (l.indexOf("," + P + ",") > -1) return -4;
              if (((m = t.$XML(h).find("tips").eq(0).text()), m.length > 32))
                return -2;
              if (
                ((v = "true" === t.$XML(h).find("isClosed").eq(0).text()), !v)
              ) {
                if (
                  ((C = t.$XML(h).find("MinClosed").eq(0).text()), !S.isInt(C))
                )
                  return -2;
                if (((y = parseInt(C, 10)), 4 > y || y > 17)) return -2;
                if (
                  ((g = t.$XML(h).find("PointNumMax").eq(0).text()),
                  !S.isInt(g))
                )
                  return -2;
                if (((x = parseInt(g, 10)), y > x || x > 17)) return -2;
              }
            }
            return p.HWP_SetSnapPolygonInfo(r, s);
          }),
          (this.I_GetSnapPolygonInfo = function (e) {
            if (ct()) {
              for (
                var t = p.JS_GetPolygonInfo(e),
                  n = '<?xml version="1.0" encoding="utf-8"?><SnapPolygonList>',
                  s = 0;
                s < t.length;
                s++
              ) {
                n += "<SnapPolygon>";
                var o = r(t[s].szDrawColor);
                n +=
                  "<id>" +
                  t[s].szTips.split("#")[1] +
                  "</id><polygonType>1</polygonType><color><r>" +
                  o[0] +
                  "</r><g>" +
                  o[1] +
                  "</g><b>" +
                  o[2] +
                  "</b></color><tips>" +
                  t[s].szTips +
                  "</tips><isClosed>" +
                  t[s].bClosed +
                  "</isClosed><pointList>";
                for (var i = 0; i < t[s].aPoint.length; i++)
                  n +=
                    "<point><x>" +
                    t[s].aPoint[i][0] / a +
                    "</x><y>" +
                    t[s].aPoint[i][1] / u +
                    "</y></point>";
                n += "</pointList></SnapPolygon>";
              }
              return (n += "</SnapPolygonList>");
            }
            return p.HWP_GetSnapPolygonInfo(e);
          }),
          (this.I_ClearSnapInfo = function (e) {
            return ct() ? p.JS_ClearSnapInfo() : p.HWP_ClearSnapInfo(e, 1);
          }),
          (this.I_DeviceCapturePic = function (e, t, n, r) {
            var s = this.findDeviceIndexByIP(e),
              o = -1;
            if (-1 != s) {
              var i = P[s],
                a = { bDateDir: !0 };
              if (
                (S.extend(a, r),
                !U(a.iResolutionWidth) && !S.isInt(a.iResolutionWidth))
              )
                return o;
              if (!U(a.iResolutionHeight) && !S.isInt(a.iResolutionHeight))
                return o;
              o = i.oProtocolInc.deviceCapturePic(i, t, n, a);
            }
            return o;
          }),
          (this.I_SetPackageType = function (e) {
            return ct() ? -1 : p.HWP_SetPackageType(e);
          }),
          (this.I_GetDevicePort = function (e) {
            var t = this.findDeviceIndexByIP(e),
              n = null;
            if (-1 != t) {
              var r = P[t];
              n = nt(r);
            }
            return n;
          }),
          (this.I_GetTextOverlay = function (e, t, n) {
            var r = this.findDeviceIndexByIP(t),
              s = -1;
            if (-1 != r) {
              var o = P[r];
              I[r];
              var i = {
                async: !1,
                type: "GET",
                success: n.success,
                error: n.error,
              };
              this.I_SendHTTPRequest(o.szIP + "_" + o.iCGIPort, e, i);
            }
            return s;
          }),
          (this.findDeviceIndexByIP = function (e) {
            if (e.indexOf("_") > -1) {
              for (var t = 0, n = P.length; n > t; t++)
                if (P[t].szDeviceIdentify == e) return t;
            } else
              for (var t = 0, n = P.length; n > t; t++)
                if (P[t].szIP == e) return t;
            return -1;
          }),
          (this.findWndIndexByIndex = function (e) {
            for (var t = 0, n = I.length; n > t; t++)
              if (I[t].iIndex == e) return t;
            return -1;
          });
        var ht = function () {
            (this.iIndex = 0),
              (this.szIP = ""),
              (this.iCGIPort = 80),
              (this.szDeviceIdentify = ""),
              (this.iChannelID = ""),
              (this.iPlayStatus = b),
              (this.bSound = !1),
              (this.bRecord = !1),
              (this.bPTZAuto = !1),
              (this.bEZoom = !1),
              (this.b3DZoom = !1);
          },
          Pt = function () {
            (this.options = {
              type: "GET",
              url: "",
              auth: "",
              timeout: 1e4,
              data: "",
              async: !0,
              success: null,
              error: null,
            }),
              (this.m_szHttpHead = ""),
              (this.m_szHttpContent = ""),
              (this.m_szHttpData = "");
          };
        (Pt.prototype.m_httpRequestSet = []),
          (Pt.prototype.setRequestParam = function (e) {
            S.extend(this.options, e);
          }),
          (Pt.prototype.submitRequest = function () {
            var e = null,
              t = this;
            if (ct()) {
              this.options.auth
                ? S.cookie("WebSession", this.options.auth)
                : S.cookie("WebSession", null);
              var n = lt(this.options.url),
                r = new window.XMLHttpRequest();
              r.open(this.options.type, n, this.options.async);
              var s = function (e) {
                return /^(http|https):\/\/([^\/]+)(.+)$/.test(e)
                  ? RegExp.$2
                  : "";
              };
              if (d.proxyAddress) {
                r.withCredentials = !0;
                var o = s(this.options.url);
                r.setRequestHeader("deviceIdentify", o);
              }
              r.setRequestHeader("X-Requested-With", "XMLHttpRequest"),
                r.setRequestHeader("If-Modified-Since", "0"),
                r.send(this.options.data || null);
              var i = function () {
                if (4 === r.readyState) {
                  e = {
                    funSuccessCallback: t.options.success,
                    funErrorCallback: t.options.error,
                  };
                  var n = r.status + r.responseText;
                  0 === r.status && (n = ""), t.httpDataAnalyse(e, n);
                }
              };
              this.options.async
                ? ((r.timeout = this.options.timeout),
                  (r.onreadystatechange = function () {
                    i();
                  }))
                : i();
            } else {
              var a = this.getHttpMethod(this.options.type);
              if (this.options.async) {
                var u = p.HWP_SubmitHttpRequest(
                  a,
                  this.options.url,
                  this.options.auth,
                  this.options.data,
                  this.options.timeout
                );
                -1 != u &&
                  ((e = {
                    iRequestID: u,
                    funSuccessCallback: this.options.success,
                    funErrorCallback: this.options.error,
                  }),
                  this.m_httpRequestSet.push(e));
              } else {
                var c = p.HWP_SendHttpSynRequest(
                  a,
                  this.options.url,
                  this.options.auth,
                  this.options.data,
                  this.options.timeout
                );
                (e = {
                  funSuccessCallback: this.options.success,
                  funErrorCallback: this.options.error,
                }),
                  this.httpDataAnalyse(e, c);
              }
            }
          }),
          (Pt.prototype.getHttpMethod = function (e) {
            var t = { GET: 1, POST: 2, PUT: 5, DELETE: 6 },
              n = t[e];
            return n ? n : -1;
          }),
          (Pt.prototype.processCallback = function (e, t) {
            for (var n = null, r = 0; r < this.m_httpRequestSet.length; r++)
              if (e == this.m_httpRequestSet[r].iRequestID) {
                (n = this.m_httpRequestSet[r]),
                  this.m_httpRequestSet.splice(r, 1);
                break;
              }
            null != n && (this.httpDataAnalyse(n, t), delete n);
          }),
          (Pt.prototype.httpDataAnalyse = function (e, t) {
            var n = "",
              r = 0;
            "" == t || U(t)
              ? e.funErrorCallback()
              : ((r = parseInt(t.substring(0, 3))),
                (n = t.substring(3, t.length)),
                isNaN(r)
                  ? e.funErrorCallback()
                  : z == r
                  ? this.options &&
                    this.options.url.indexOf("?format=json") > -1
                    ? e.funSuccessCallback(JSON.parse(n))
                    : e.funSuccessCallback(S.loadXML(n))
                  : e.funErrorCallback && e.funErrorCallback(r, S.loadXML(n)));
          });
        var It = function () {};
        (It.prototype.CGI = {
          login: "%s%s:%s/ISAPI/Security/userCheck",
          getAudioInfo: "%s%s:%s/ISAPI/System/TwoWayAudio/channels",
          getDeviceInfo: "%s%s:%s/ISAPI/System/deviceInfo",
          getAnalogChannelInfo: "%s%s:%s/ISAPI/System/Video/inputs/channels",
          getDigitalChannel: "%s%s:%s/ISAPI/ContentMgmt/InputProxy/channels",
          getDigitalChannelInfo:
            "%s%s:%s/ISAPI/ContentMgmt/InputProxy/channels/status",
          getZeroChannelInfo: "%s%s:%s/ISAPI/ContentMgmt/ZeroVideo/channels",
          getStreamChannels: {
            analog: "%s%s:%s/ISAPI/Streaming/channels",
            digital: "%s%s:%s/ISAPI/ContentMgmt/StreamingProxy/channels",
          },
          getStreamDynChannels:
            "%s%s:%s/PSIA/Custom/SelfExt/ContentMgmt/DynStreaming/channels",
          startRealPlay: {
            channels: "%s%s:%s/PSIA/streaming/channels/%s",
            zeroChannels:
              "%s%s:%s/PSIA/Custom/SelfExt/ContentMgmt/ZeroStreaming/channels/%s",
          },
          startShttpRealPlay: {
            channels: "%s%s:%s/SDK/play/%s/004",
            zeroChannels: "%s%s:%s/SDK/play/100/004/ZeroStreaming",
          },
          startWsRealPlay: {
            channels: "%s%s:%s/%s",
            zeroChannels: "%s%s:%s/%s",
          },
          startVoiceTalk: {
            open: "%s%s:%s/ISAPI/System/TwoWayAudio/channels/%s/open",
            close: "%s%s:%s/ISAPI/System/TwoWayAudio/channels/%s/close",
            audioData: "%s%s:%s/ISAPI/System/TwoWayAudio/channels/%s/audioData",
          },
          ptzControl: {
            analog: "%s%s:%s/ISAPI/PTZCtrl/channels/%s/continuous",
            digital:
              "%s%s:%s/ISAPI/PTZCtrl/channels/%s/continuous",
          },
          ptzAutoControl: {
            ipdome: "%s%s:%s/ISAPI/PTZCtrl/channels/%s/presets/%s/goto",
            analog: "%s%s:%s/ISAPI/PTZCtrl/channels/%s/autoPan",
            digital:
              "%s%s:%s/ISAPI/ContentMgmt/PTZCtrlProxy/channels/%s/autoPan",
          },
          setPreset: {
            analog: "%s%s:%s/ISAPI/PTZCtrl/channels/%s/presets/%s",
            digital:
              "%s%s:%s/ISAPI/ContentMgmt/PTZCtrlProxy/channels/%s/presets/%s",
          },
          goPreset: {
            analog: "%s%s:%s/ISAPI/PTZCtrl/channels/%s/presets/%s/goto",
            digital:
              "%s%s:%s/ISAPI/ContentMgmt/PTZCtrlProxy/channels/%s/presets/%s/goto",
          },
          ptzFocus: {
            analog: "%s%s:%s/ISAPI/Image/channels/%s/focus",
            digital: "%s%s:%s/ISAPI/ContentMgmt/ImageProxy/channels/%s/focus",
            ipc: "%s%s:%s/ISAPI/System/Video/inputs/channels/%s/focus",
          },
          ptzIris: {
            analog: "%s%s:%s/ISAPI/Image/channels/%s/iris",
            digital: "%s%s:%s/ISAPI/ContentMgmt/ImageProxy/channels/%s/iris",
            ipc: "%s%s:%s/ISAPI/System/Video/inputs/channels/%s/iris",
          },
          getNetworkBond: "%s%s:%s/ISAPI/System/Network/Bond",
          getNetworkInterface: "%s%s:%s/ISAPI/System/Network/interfaces",
          getUPnPPortStatus: "%s%s:%s/ISAPI/System/Network/UPnP/ports/status",
          getPPPoEStatus: "%s%s:%s/ISAPI/System/Network/PPPoE/1/status",
          getPortInfo: "%s%s:%s/ISAPI/Security/adminAccesses",
          recordSearch: "%s%s:%s/ISAPI/ContentMgmt/search",
          startPlayback:
            "%s%s:%s/PSIA/streaming/tracks/%s?starttime=%s&endtime=%s",
          startWsPlayback: "%s%s:%s/%s",
          startShttpPlayback: "%s%s:%s/SDK/playback/%s",
          startShttpReversePlayback: "%s%s:%s/SDK/playback/%s/reversePlay",
          startTransCodePlayback: "%s%s:%s/SDK/playback/%s/transcoding",
          startDownloadRecord: "%s%s:%s/ISAPI/ContentMgmt/download",
          downloaddeviceConfig: "%s%s:%s/ISAPI/System/configurationData",
          uploaddeviceConfig: "%s%s:%s/ISAPI/System/configurationData",
          restart: "%s%s:%s/ISAPI/System/reboot",
          restore: "%s%s:%s/ISAPI/System/factoryReset?mode=%s",
          startUpgrade: {
            upgrade: "%s%s:%s/ISAPI/System/updateFirmware",
            status: "%s%s:%s/ISAPI/System/upgradeStatus",
          },
          set3DZoom: {
            analog: "%s%s:%s/ISAPI/PTZCtrl/channels/%s/position3D",
            digital:
              "%s%s:%s/ISAPI/ContentMgmt/PTZCtrlProxy/channels/%s/position3D",
          },
          getSecurityVersion:
            "%s%s:%s/ISAPI/Security/capabilities?username=admin",
          SDKCapabilities: "%s%s:%s/SDK/capabilities",
          deviceCapture: {
            channels: "%s%s:%s/ISAPI/Streaming/channels/%s/picture",
          },
          overlayInfo: {
            analog: "%s%s:%s/ISAPI/System/Video/inputs/channels/%s/overlays/",
            digital:
              "%s%s:%s/ISAPI/ContentMgmt/InputProxy/channels/%s/video/overlays",
          },
          sessionCap:
            "%s%s:%s/ISAPI/Security/sessionLogin/capabilities?username=%s",
          sessionLogin: "%s%s:%s/ISAPI/Security/sessionLogin",
          sessionHeartbeat: "%s%s:%s/ISAPI/Security/sessionHeartbeat",
          sessionLogout: "%s%s:%s/ISAPI/Security/sessionLogout",
          systemCapabilities: "%s%s:%s/ISAPI/System/capabilities",
        }),
          (It.prototype.login = function (e, t, n, r) {
            var s = 2 == r.protocol ? "https://" : "http://",
              o = F(this.CGI.login, s, e, t),
              i = new Pt(),
              a = { type: "GET", url: o, auth: n, success: null, error: null };
            S.extend(a, r),
              S.extend(a, {
                success: function (e) {
                  r.success && r.success(e);
                },
                error: function (e, t) {
                  r.error && r.error(e, t);
                },
              }),
              i.setRequestParam(a),
              i.submitRequest();
          }),
          (It.prototype.getAudioInfo = function (e, t) {
            var n = F(
                this.CGI.getAudioInfo,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (It.prototype.getSecurityVersion = function (e, t) {
            var n = F(
                this.CGI.getSecurityVersion,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (It.prototype.getDeviceInfo = function (e, n) {
            var r = F(
                this.CGI.getDeviceInfo,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              s = new Pt(),
              o = {
                type: "GET",
                url: r,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(o, n),
              S.extend(o, {
                success: function (e) {
                  var r = [];
                  r.push("<DeviceInfo>"),
                    r.push(
                      "<deviceName>" +
                        S.escape(t.$XML(e).find("deviceName").eq(0).text()) +
                        "</deviceName>"
                    ),
                    r.push(
                      "<deviceID>" +
                        t.$XML(e).find("deviceID").eq(0).text() +
                        "</deviceID>"
                    ),
                    r.push(
                      "<deviceType>" +
                        t.$XML(e).find("deviceType").eq(0).text() +
                        "</deviceType>"
                    ),
                    r.push(
                      "<model>" +
                        t.$XML(e).find("model").eq(0).text() +
                        "</model>"
                    ),
                    r.push(
                      "<serialNumber>" +
                        t.$XML(e).find("serialNumber").eq(0).text() +
                        "</serialNumber>"
                    ),
                    r.push(
                      "<macAddress>" +
                        t.$XML(e).find("macAddress").eq(0).text() +
                        "</macAddress>"
                    ),
                    r.push(
                      "<firmwareVersion>" +
                        t.$XML(e).find("firmwareVersion").eq(0).text() +
                        "</firmwareVersion>"
                    ),
                    r.push(
                      "<firmwareReleasedDate>" +
                        t.$XML(e).find("firmwareReleasedDate").eq(0).text() +
                        "</firmwareReleasedDate>"
                    ),
                    r.push(
                      "<encoderVersion>" +
                        t.$XML(e).find("encoderVersion").eq(0).text() +
                        "</encoderVersion>"
                    ),
                    r.push(
                      "<encoderReleasedDate>" +
                        t.$XML(e).find("encoderReleasedDate").eq(0).text() +
                        "</encoderReleasedDate>"
                    ),
                    r.push("</DeviceInfo>"),
                    (e = S.loadXML(r.join(""))),
                    n.success && n.success(e);
                },
                error: function (e, t) {
                  n.error && n.error(e, t);
                },
              }),
              s.setRequestParam(o),
              s.submitRequest();
          }),
          (It.prototype.getAnalogChannelInfo = function (e, n) {
            var r = F(
                this.CGI.getAnalogChannelInfo,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              s = new Pt(),
              o = {
                type: "GET",
                url: r,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(o, n),
              S.extend(o, {
                success: function (r) {
                  var s = [];
                  s.push("<VideoInputChannelList>");
                  var o = t.$XML(r).find("VideoInputChannel", !0);
                  e.iAnalogChannelNum = o.length;
                  for (var i = 0, a = o.length; a > i; i++) {
                    var u = o[i];
                    s.push("<VideoInputChannel>"),
                      s.push(
                        "<id>" + t.$XML(u).find("id").eq(0).text() + "</id>"
                      ),
                      s.push(
                        "<inputPort>" +
                          t.$XML(u).find("inputPort").eq(0).text() +
                          "</inputPort>"
                      ),
                      s.push(
                        "<name>" +
                          S.escape(t.$XML(u).find("name").eq(0).text()) +
                          "</name>"
                      ),
                      s.push(
                        "<videoFormat>" +
                          t.$XML(u).find("videoFormat").eq(0).text() +
                          "</videoFormat>"
                      ),
                      s.push("</VideoInputChannel>");
                  }
                  s.push("</VideoInputChannelList>"),
                    (r = S.loadXML(s.join(""))),
                    n.success && n.success(r);
                },
                error: function (e, t) {
                  n.error && n.error(e, t);
                },
              }),
              s.setRequestParam(o),
              s.submitRequest();
          }),
          (It.prototype.getDigitalChannel = function (e, n) {
            var r = F(
                this.CGI.getDigitalChannel,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              s = new Pt(),
              o = {
                type: "GET",
                url: r,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(o, n),
              S.extend(o, {
                success: function (e) {
                  var r = [];
                  r.push("<InputProxyChannelList>");
                  for (
                    var s = t.$XML(e).find("InputProxyChannel", !0),
                      o = 0,
                      i = s.length;
                    i > o;
                    o++
                  ) {
                    var a = s[o];
                    r.push("<InputProxyChannel>"),
                      r.push(
                        "<id>" + t.$XML(a).find("id").eq(0).text() + "</id>"
                      ),
                      r.push(
                        "<name>" +
                          S.escape(t.$XML(a).find("name").eq(0).text()) +
                          "</name>"
                      ),
                      r.push("</InputProxyChannel>");
                  }
                  r.push("</InputProxyChannelList>"),
                    (e = S.loadXML(r.join(""))),
                    n.success && n.success(e);
                },
                error: function (e, t) {
                  n.error && n.error(e, t);
                },
              }),
              s.setRequestParam(o),
              s.submitRequest();
          }),
          (It.prototype.getDigitalChannelInfo = function (e, n) {
            var r = null,
              s = {};
            if (
              (this.getDigitalChannel(e, {
                async: !1,
                success: function (e) {
                  r = e;
                  for (
                    var n = t.$XML(r).find("InputProxyChannel", !0),
                      o = 0,
                      i = n.length;
                    i > o;
                    o++
                  ) {
                    var a = n[o],
                      u = t.$XML(a).find("id").eq(0).text(),
                      c = t.$XML(a).find("name").eq(0).text();
                    s[u] = c;
                  }
                },
                error: function (e, t) {
                  n.error && n.error(e, t);
                },
              }),
              null !== r)
            ) {
              var o = F(
                  this.CGI.getDigitalChannelInfo,
                  e.szHttpProtocol,
                  e.szIP,
                  e.iCGIPort
                ),
                i = new Pt(),
                a = {
                  type: "GET",
                  url: o,
                  auth: e.szAuth,
                  success: null,
                  error: null,
                };
              S.extend(a, n),
                S.extend(a, {
                  success: function (e) {
                    var r = [];
                    r.push("<InputProxyChannelStatusList>");
                    for (
                      var o = t.$XML(e).find("InputProxyChannelStatus", !0),
                        i = 0,
                        a = o.length;
                      a > i;
                      i++
                    ) {
                      var u = o[i],
                        c = t.$XML(u).find("id").eq(0).text();
                      r.push("<InputProxyChannelStatus>"),
                        r.push("<id>" + c + "</id>"),
                        r.push("<sourceInputPortDescriptor>"),
                        r.push(
                          "<proxyProtocol>" +
                            t.$XML(u).find("proxyProtocol").eq(0).text() +
                            "</proxyProtocol>"
                        ),
                        r.push(
                          "<addressingFormatType>" +
                            t
                              .$XML(u)
                              .find("addressingFormatType")
                              .eq(0)
                              .text() +
                            "</addressingFormatType>"
                        ),
                        r.push(
                          "<ipAddress>" +
                            t.$XML(u).find("ipAddress").eq(0).text() +
                            "</ipAddress>"
                        ),
                        r.push(
                          "<managePortNo>" +
                            t.$XML(u).find("managePortNo").eq(0).text() +
                            "</managePortNo>"
                        ),
                        r.push(
                          "<srcInputPort>" +
                            t.$XML(u).find("srcInputPort").eq(0).text() +
                            "</srcInputPort>"
                        ),
                        r.push(
                          "<userName>" +
                            S.escape(t.$XML(u).find("userName").eq(0).text()) +
                            "</userName>"
                        ),
                        r.push(
                          "<streamType>" +
                            t.$XML(u).find("streamType").eq(0).text() +
                            "</streamType>"
                        ),
                        r.push(
                          "<online>" +
                            t.$XML(u).find("online").eq(0).text() +
                            "</online>"
                        ),
                        r.push("<name>" + S.escape(s[c]) + "</name>"),
                        r.push("</sourceInputPortDescriptor>"),
                        r.push("</InputProxyChannelStatus>");
                    }
                    r.push("</InputProxyChannelStatusList>"),
                      (e = S.loadXML(r.join(""))),
                      n.success && n.success(e);
                  },
                  error: function (e, t) {
                    n.error && n.error(e, t);
                  },
                }),
                i.setRequestParam(a),
                i.submitRequest();
            }
          }),
          (It.prototype.getZeroChannelInfo = function (e, t) {
            var n = F(
                this.CGI.getZeroChannelInfo,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (It.prototype.getStreamChannels = function (e, t) {
            if (0 != e.iAnalogChannelNum)
              var n = F(
                this.CGI.getStreamChannels.analog,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              );
            else
              var n = F(
                this.CGI.getStreamChannels.digital,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              );
            var r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (It.prototype.getPPPoEStatus = function (e, t) {
            var n = F(
                this.CGI.getPPPoEStatus,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (It.prototype.getUPnPPortStatus = function (e, t) {
            var n = F(
                this.CGI.getUPnPPortStatus,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (It.prototype.getNetworkBond = function (e, t) {
            var n = F(
                this.CGI.getNetworkBond,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (It.prototype.getNetworkInterface = function (e, t) {
            var n = F(
                this.CGI.getNetworkInterface,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (It.prototype.getPortInfo = function (e, t) {
            var n = F(
                this.CGI.getPortInfo,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (It.prototype.startRealPlay = function (e, t) {
            var n = 100 * t.iChannelID + t.iStreamType,
              r = "",
              s = -1,
              o = e.szIP;
            if (
              ("rtsp://" === t.urlProtocol && (o = V(o)),
              t.bZeroChannel
                ? (ct() && (n = 0),
                  (r = F(t.cgi.zeroChannels, t.urlProtocol, o, t.iPort, n)))
                : (r = F(t.cgi.channels, t.urlProtocol, o, t.iPort, n)),
              d.proxyAddress && ct())
            ) {
              S.cookie("webVideoCtrlProxy", o + ":" + t.iPort, { raw: !0 }),
                (r = F(
                  t.cgi.zeroChannels,
                  t.urlProtocol,
                  d.proxyAddress.ip,
                  d.proxyAddress.port,
                  n
                ));
              var i = o + ":" + t.iPort;
              r +=
                r.indexOf("?") > -1
                  ? "&deviceIdentify=" + i
                  : "?deviceIdentify=" + i;
            }
            var a = function () {
                var n = new ht();
                (n.iIndex = t.iWndIndex),
                  (n.szIP = e.szIP),
                  (n.iCGIPort = e.iCGIPort),
                  (n.szDeviceIdentify = e.szDeviceIdentify),
                  (n.iChannelID = t.iChannelID),
                  (n.iPlayStatus = T),
                  I.push(n);
              },
              u = $.Deferred();
            if (ct()) {
              var c = { sessionID: e.szAuth, token: O(e, e.szDeviceIdentify) };
              (r = dt(r)),
                p.JS_Play(r, c, t.iWndIndex).then(
                  function () {
                    a(), u.resolve();
                  },
                  function () {
                    u.reject();
                  }
                );
            } else
              (s = p.HWP_Play(r, e.szAuth, t.iWndIndex, "", "")),
                0 == s ? (a(), u.resolve()) : u.reject();
            return u;
          }),
          (It.prototype.startVoiceTalk = function (e, t) {
            var n = F(
                this.CGI.startVoiceTalk.open,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort,
                t
              ),
              r = F(
                this.CGI.startVoiceTalk.close,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort,
                t
              ),
              s = F(
                this.CGI.startVoiceTalk.audioData,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort,
                t
              ),
              o = p.HWP_StartVoiceTalkEx(
                n,
                r,
                s,
                e.szAuth,
                e.iAudioType,
                e.m_iAudioBitRate,
                e.m_iAudioSamplingRate
              );
            return o;
          }),
          (It.prototype.ptzAutoControl = function (e, t, n, r) {
            var s = n.iChannelID,
              o = "",
              i = "";
            if (
              ((r.iPTZSpeed = r.iPTZSpeed < 7 ? 15 * r.iPTZSpeed : 100),
              t && (r.iPTZSpeed = 0),
              e.szDeviceType != E)
            )
              (o =
                s <= e.iAnalogChannelNum
                  ? F(
                      this.CGI.ptzAutoControl.analog,
                      e.szHttpProtocol,
                      e.szIP,
                      e.iCGIPort,
                      n.iChannelID
                    )
                  : n.bShttpIPChannel
                  ? F(
                      this.CGI.ptzAutoControl.digital,
                      e.szHttpProtocol,
                      e.szIP,
                      e.iCGIPort,
                      n.iChannelID -
                        e.oStreamCapa.iIpChanBase +
                        1 +
                        e.iAnalogChannelNum
                    )
                  : F(
                      this.CGI.ptzAutoControl.digital,
                      e.szHttpProtocol,
                      e.szIP,
                      e.iCGIPort,
                      n.iChannelID
                    )),
                (i =
                  "<?xml version='1.0' encoding='UTF-8'?><autoPanData><autoPan>" +
                  r.iPTZSpeed +
                  "</autoPan>" +
                  "</autoPanData>");
            else {
              0 === r.iPTZSpeed && (t = !0);
              var a = 99;
              t && (a = 96),
                (o = F(
                  this.CGI.ptzAutoControl.ipdome,
                  e.szHttpProtocol,
                  e.szIP,
                  e.iCGIPort,
                  n.iChannelID,
                  a
                ));
            }
            var u = new Pt(),
              c = {
                type: "PUT",
                url: o,
                async: !1,
                auth: e.szAuth,
                data: i,
                success: null,
                error: null,
              },
              l = this;
            S.extend(c, r),
              S.extend(c, {
                success: function (e) {
                  (n.bPTZAuto = !n.bPTZAuto), r.success && r.success(e);
                },
                error: function (t, s) {
                  if (k == e.szDeviceType || Z == e.szDeviceType) {
                    (o = n.bShttpIPChannel
                      ? F(
                          l.CGI.ptzControl.analog,
                          e.szHttpProtocol,
                          e.szIP,
                          e.iCGIPort,
                          n.iChannelID -
                            e.oStreamCapa.iIpChanBase +
                            1 +
                            e.iAnalogChannelNum
                        )
                      : F(
                          l.CGI.ptzControl.analog,
                          e.szHttpProtocol,
                          e.szIP,
                          e.iCGIPort,
                          n.iChannelID
                        )),
                      (i =
                        "<?xml version='1.0' encoding='UTF-8'?><PTZData><pan>" +
                        r.iPTZSpeed +
                        "</pan>" +
                        "<tilt>" +
                        0 +
                        "</tilt>" +
                        "</PTZData>");
                    var a = new Pt(),
                      u = {
                        type: "PUT",
                        url: o,
                        async: !1,
                        auth: e.szAuth,
                        data: i,
                        success: null,
                        error: null,
                      };
                    S.extend(u, r), a.setRequestParam(u), a.submitRequest();
                  } else r.error && r.error(t, s);
                },
              }),
              u.setRequestParam(c),
              u.submitRequest();
          }),
          (It.prototype.ptzControl = function (e, t, n, r) {
            var s = n.iChannelID,
              o = "";
            n.bPTZAuto && this.ptzAutoControl(e, !0, n, { iPTZSpeed: 0 }),
              (r.iPTZSpeed = t ? 0 : r.iPTZSpeed < 7 ? 15 * r.iPTZSpeed : 100);
            var i = [
                {},
                { pan: 0, tilt: r.iPTZSpeed },
                { pan: 0, tilt: -r.iPTZSpeed },
                { pan: -r.iPTZSpeed, tilt: 0 },
                { pan: r.iPTZSpeed, tilt: 0 },
                { pan: -r.iPTZSpeed, tilt: r.iPTZSpeed },
                { pan: -r.iPTZSpeed, tilt: -r.iPTZSpeed },
                { pan: r.iPTZSpeed, tilt: r.iPTZSpeed },
                { pan: r.iPTZSpeed, tilt: -r.iPTZSpeed },
                {},
                { speed: r.iPTZSpeed },
                { speed: -r.iPTZSpeed },
                { speed: r.iPTZSpeed },
                { speed: -r.iPTZSpeed },
                { speed: r.iPTZSpeed },
                { speed: -r.iPTZSpeed },
              ],
              a = "",
              u = {};
            switch (r.iPTZIndex) {
              case 1:
              case 2:
              case 3:
              case 4:
              case 5:
              case 6:
              case 7:
              case 8:
                (u = this.CGI.ptzControl),
                  (a =
                    "<?xml version='1.0' encoding='UTF-8'?><PTZData><pan>" +
                    i[r.iPTZIndex].pan +
                    "</pan>" +
                    "<tilt>" +
                    i[r.iPTZIndex].tilt +
                    "</tilt>" +
                    "</PTZData>");
                break;
              case 10:
              case 11:
                (u = this.CGI.ptzControl),
                  (a =
                    "<?xml version='1.0' encoding='UTF-8'?><PTZData><zoom>" +
                    i[r.iPTZIndex].speed +
                    "</zoom>" +
                    "</PTZData>");
                break;
              case 12:
              case 13:
                (u = this.CGI.ptzFocus),
                  (a =
                    "<?xml version='1.0' encoding='UTF-8'?><FocusData><focus>" +
                    i[r.iPTZIndex].speed +
                    "</focus>" +
                    "</FocusData>");
                break;
              case 14:
              case 15:
                (u = this.CGI.ptzIris),
                  (a =
                    "<?xml version='1.0' encoding='UTF-8'?><IrisData><iris>" +
                    i[r.iPTZIndex].speed +
                    "</iris>" +
                    "</IrisData>");
                break;
              default:
                return r.error && r.error(), void 0;
            }
            o =
              (u != this.CGI.ptzFocus && u != this.CGI.ptzIris) ||
              (e.szDeviceType != k &&
                e.szDeviceType != E &&
                e.szDeviceType != Z)
                ? s <= e.iAnalogChannelNum
                  ? F(
                      u.analog,
                      e.szHttpProtocol,
                      e.szIP,
                      e.iCGIPort,
                      n.iChannelID
                    )
                  : n.bShttpIPChannel
                  ? F(
                      u.digital,
                      e.szHttpProtocol,
                      e.szIP,
                      e.iCGIPort,
                      n.iChannelID -
                        e.oStreamCapa.iIpChanBase +
                        1 +
                        e.iAnalogChannelNum
                    )
                  : F(
                      u.digital,
                      e.szHttpProtocol,
                      e.szIP,
                      e.iCGIPort,
                      n.iChannelID
                    )
                : F(u.ipc, e.szHttpProtocol, e.szIP, e.iCGIPort, n.iChannelID);
            var c = new Pt(),
              l = {
                type: "PUT",
                url: o,
                async: !1,
                auth: e.szAuth,
                data: a,
                success: null,
                error: null,
              };
            S.extend(l, r),
              S.extend(l, {
                success: function (e) {
                  r.success && r.success(e);
                },
                error: function (e, t) {
                  r.error && r.error(e, t);
                },
              }),
              c.setRequestParam(l),
              c.submitRequest();
          }),
          (It.prototype.setPreset = function (e, t, n) {
            var r = t.iChannelID,
              s = "",
              o = "";
            (s =
              r <= e.iAnalogChannelNum
                ? F(
                    this.CGI.setPreset.analog,
                    e.szHttpProtocol,
                    e.szIP,
                    e.iCGIPort,
                    t.iChannelID,
                    n.iPresetID
                  )
                : t.bShttpIPChannel
                ? F(
                    this.CGI.setPreset.digital,
                    e.szHttpProtocol,
                    e.szIP,
                    e.iCGIPort,
                    t.iChannelID -
                      e.oStreamCapa.iIpChanBase +
                      1 +
                      e.iAnalogChannelNum,
                    n.iPresetID
                  )
                : F(
                    this.CGI.setPreset.digital,
                    e.szHttpProtocol,
                    e.szIP,
                    e.iCGIPort,
                    t.iChannelID,
                    n.iPresetID
                  )),
              (o = "<?xml version='1.0' encoding='UTF-8'?>"),
              (o += "<PTZPreset>"),
              (o += "<id>" + n.iPresetID + "</id>"),
              e.szDeviceType != E &&
                (o += "<presetName>Preset" + n.iPresetID + "</presetName>"),
              (o += "</PTZPreset>");
            var i = new Pt(),
              a = {
                type: "PUT",
                url: s,
                auth: e.szAuth,
                data: o,
                success: null,
                error: null,
              };
            S.extend(a, n),
              S.extend(a, {
                success: function (e) {
                  n.success && n.success(e);
                },
                error: function (e, t) {
                  n.error && n.error(e, t);
                },
              }),
              i.setRequestParam(a),
              i.submitRequest();
          }),
          (It.prototype.goPreset = function (e, t, n) {
            var r = t.iChannelID,
              s = "";
            s =
              r <= e.iAnalogChannelNum
                ? F(
                    this.CGI.goPreset.analog,
                    e.szHttpProtocol,
                    e.szIP,
                    e.iCGIPort,
                    t.iChannelID,
                    n.iPresetID
                  )
                : t.bShttpIPChannel
                ? F(
                    this.CGI.goPreset.digital,
                    e.szHttpProtocol,
                    e.szIP,
                    e.iCGIPort,
                    t.iChannelID -
                      e.oStreamCapa.iIpChanBase +
                      1 +
                      e.iAnalogChannelNum,
                    n.iPresetID
                  )
                : F(
                    this.CGI.goPreset.digital,
                    e.szHttpProtocol,
                    e.szIP,
                    e.iCGIPort,
                    t.iChannelID,
                    n.iPresetID
                  );
            var o = new Pt(),
              i = {
                type: "PUT",
                url: s,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(i, n),
              S.extend(i, {
                success: function (e) {
                  n.success && n.success(e);
                },
                error: function (e, t) {
                  n.error && n.error(e, t);
                },
              }),
              o.setRequestParam(i),
              o.submitRequest();
          }),
          (It.prototype.overlayInfo = function () {
            return (szUrl = this.CGI.overlayInfo.analog);
          }),
          (It.prototype.recordSearch = function (e, n) {
            var r = "",
              s = "",
              i = n.iChannelID,
              a = n.iStreamType,
              u = n.szStartTime.replace(" ", "T") + "Z",
              c = n.szEndTime.replace(" ", "T") + "Z";
            (r = F(
              this.CGI.recordSearch,
              e.szHttpProtocol,
              e.szIP,
              e.iCGIPort
            )),
              (s =
                "<?xml version='1.0' encoding='UTF-8'?><CMSearchDescription><searchID>" +
                new o() +
                "</searchID>" +
                "<trackList><trackID>" +
                (100 * i + a) +
                "</trackID></trackList>" +
                "<timeSpanList>" +
                "<timeSpan>" +
                "<startTime>" +
                u +
                "</startTime>" +
                "<endTime>" +
                c +
                "</endTime>" +
                "</timeSpan>" +
                "</timeSpanList>" +
                "<maxResults>40</maxResults>" +
                "<searchResultPostion>" +
                n.iSearchPos +
                "</searchResultPostion>" +
                "<metadataList>" +
                "<metadataDescriptor>//metadata.ISAPI.org/VideoMotion</metadataDescriptor>" +
                "</metadataList>" +
                "</CMSearchDescription>");
            var l = new Pt(),
              d = {
                type: "POST",
                url: r,
                auth: e.szAuth,
                data: s,
                success: null,
                error: null,
              };
            S.extend(d, n),
              S.extend(d, {
                success: function (e) {
                  var r = [];
                  r.push("<CMSearchResult>"),
                    r.push(
                      "<responseStatus>" +
                        t.$XML(e).find("responseStatus").eq(0).text() +
                        "</responseStatus>"
                    ),
                    r.push(
                      "<responseStatusStrg>" +
                        t.$XML(e).find("responseStatusStrg").eq(0).text() +
                        "</responseStatusStrg>"
                    ),
                    r.push(
                      "<numOfMatches>" +
                        t.$XML(e).find("numOfMatches").eq(0).text() +
                        "</numOfMatches>"
                    ),
                    r.push("<matchList>");
                  for (
                    var s = t.$XML(e).find("searchMatchItem", !0),
                      o = 0,
                      i = s.length;
                    i > o;
                    o++
                  ) {
                    var a = s[o];
                    r.push("<searchMatchItem>"),
                      r.push(
                        "<trackID>" +
                          t.$XML(a).find("trackID").eq(0).text() +
                          "</trackID>"
                      ),
                      r.push(
                        "<startTime>" +
                          t.$XML(a).find("startTime").eq(0).text() +
                          "</startTime>"
                      ),
                      r.push(
                        "<endTime>" +
                          t.$XML(a).find("endTime").eq(0).text() +
                          "</endTime>"
                      ),
                      r.push(
                        "<playbackURI>" +
                          S.escape(t.$XML(a).find("playbackURI").eq(0).text()) +
                          "</playbackURI>"
                      ),
                      r.push(
                        "<metadataDescriptor>" +
                          t
                            .$XML(a)
                            .find("metadataDescriptor")
                            .eq(0)
                            .text()
                            .split("/")[1] +
                          "</metadataDescriptor>"
                      ),
                      r.push("</searchMatchItem>");
                  }
                  r.push("</matchList>"),
                    r.push("</CMSearchResult>"),
                    (e = S.loadXML(r.join(""))),
                    n.success && n.success(e);
                },
                error: function (e, t) {
                  n.error && n.error(e, t);
                },
              }),
              l.setRequestParam(d),
              l.submitRequest();
          }),
          (It.prototype.startPlayback = function (e, t) {
            var n = t.iWndIndex,
              r = "",
              s = t.szStartTime,
              o = t.szEndTime,
              i = e.szIP;
            if (("rtsp://" === t.urlProtocol && (i = V(i)), ct()))
              if (d.proxyAddress) {
                S.cookie("webVideoCtrlProxy", i + ":" + t.iPort, { raw: !0 }),
                  (r = F(
                    t.cgi,
                    t.urlProtocol,
                    d.proxyAddress.ip,
                    d.proxyAddress.port,
                    t.iChannelID
                  ));
                var a = i + ":" + t.iPort;
                r +=
                  r.indexOf("?") > -1
                    ? "&deviceIdentify=" + a
                    : "?deviceIdentify=" + a;
              } else
                r = F(t.cgi, t.urlProtocol, i, t.iPort, t.iChannelID, s, o);
            else r = F(t.cgi, t.urlProtocol, i, t.iPort, t.iChannelID, s, o);
            if (!U(t.oTransCodeParam)) {
              var u = ut(t.oTransCodeParam);
              if ("" == u) return -1;
              p.HWP_SetTrsPlayBackParam(n, u);
            }
            var c = function () {
                var r = new ht();
                (r.iIndex = n),
                  (r.szIP = e.szIP),
                  (r.iCGIPort = e.iCGIPort),
                  (r.szDeviceIdentify = e.szDeviceIdentify),
                  (r.iChannelID = t.iChannelID),
                  (r.iPlayStatus = A),
                  I.push(r);
              },
              l = $.Deferred();
            if (ct()) {
              var f = { sessionID: e.szAuth, token: O(e, e.szDeviceIdentify) };
              p.JS_Play(r, f, n, s, o).then(
                function () {
                  c(), l.resolve();
                },
                function () {
                  l.reject();
                }
              );
            } else {
              var h = p.HWP_Play(r, e.szAuth, n, s, o);
              0 == h ? (c(), l.resolve()) : l.reject();
            }
            return l;
          }),
          (It.prototype.reversePlayback = function (e, t) {
            var n = t.iWndIndex,
              r = t.szStartTime,
              s = t.szEndTime,
              o = e.szIP;
            "rtsp://" === t.urlProtocol && (o = V(o));
            var i = F(t.cgi, t.urlProtocol, o, t.iPort, t.iChannelID, r, s),
              a = p.HWP_ReversePlay(i, e.szAuth, n, r, s);
            if (0 == a) {
              var u = new ht();
              (u.iIndex = n),
                (u.szIP = e.szIP),
                (u.iCGIPort = e.iCGIPort),
                (u.szDeviceIdentify = e.szDeviceIdentify),
                (u.iChannelID = t.iChannelID),
                (u.iPlayStatus = q),
                I.push(u);
            }
            return a;
          }),
          (It.prototype.startDownloadRecord = function (e, t) {
            var n = -1,
              r = F(
                this.CGI.startDownloadRecord,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              s =
                "<?xml version='1.0' encoding='UTF-8'?><downloadRequest><playbackURI> " +
                S.escape(t.szPlaybackURI) +
                "</playbackURI>" +
                "</downloadRequest>";
            return (
              ct()
                ? ((r = lt(r)),
                  (n = p.JS_StartDownload(r, e.szAuth, t.szFileName, s)))
                : (n = p.HWP_StartDownload(
                    r,
                    e.szAuth,
                    t.szFileName,
                    s,
                    t.bDateDir
                  )),
              n
            );
          }),
          (It.prototype.exportDeviceConfig = function (e, t) {
            var n = F(
              this.CGI.downloaddeviceConfig,
              e.szHttpProtocol,
              e.szIP,
              e.iCGIPort
            );
            if (ct()) {
              var r = {
                  type: "PUT",
                  url: n,
                  auth: e.szAuth,
                  success: function () {},
                  error: function () {},
                },
                s = new Pt();
              return (
                s.setRequestParam(r),
                s.submitRequest(),
                (n = lt(n)),
                t && (n = S.exportPasswordDeviceConfig(n, t)),
                p.JS_ExportDeviceConfig(n)
              );
            }
            return (
              t && (n = S.exportPasswordDeviceConfig(n, t)),
              p.HWP_ExportDeviceConfig(n, e.szAuth, "", 0)
            );
          }),
          (It.prototype.importDeviceConfig = function (e, t, n) {
            var r = F(
              this.CGI.uploaddeviceConfig,
              e.szHttpProtocol,
              e.szIP,
              e.iCGIPort
            );
            if (ct()) {
              var s = {
                  type: "PUT",
                  url: r,
                  auth: e.szAuth,
                  success: function () {},
                  error: function () {},
                },
                o = new Pt();
              return (
                o.setRequestParam(s),
                o.submitRequest(),
                (r = lt(r)),
                n && (r = S.exportPasswordDeviceConfig(r, n)),
                p.JS_UploadFile(r)
              );
            }
            return (
              n && (r = S.exportPasswordDeviceConfig(r, n)),
              p.HWP_ImportDeviceConfig(r, e.szAuth, t.szFileName, 0)
            );
          }),
          (It.prototype.restart = function (e, t) {
            var n = F(this.CGI.restart, e.szHttpProtocol, e.szIP, e.iCGIPort),
              r = new Pt(),
              s = {
                type: "PUT",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (It.prototype.restore = function (e, t, n) {
            var r = F(
                this.CGI.restore,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort,
                t
              ),
              s = new Pt(),
              o = {
                type: "PUT",
                url: r,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(o, n),
              S.extend(o, {
                success: function (e) {
                  n.success && n.success(e);
                },
                error: function (e, t) {
                  n.error && n.error(e, t);
                },
              }),
              s.setRequestParam(o),
              s.submitRequest();
          }),
          (It.prototype.startUpgrade = function (e, t) {
            $.Deferred();
            var n = F(
                this.CGI.startUpgrade.upgrade,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = F(
                this.CGI.startUpgrade.status,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              );
            return (szRet = p.HWP_StartUpgrade(n, r, e.szAuth, t.szFileName));
          }),
          (It.prototype.asyncstartUpgrade = function (e, t) {
            var n = $.Deferred(),
              r = F(
                this.CGI.startUpgrade.upgrade,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              s = F(
                this.CGI.startUpgrade.status,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              );
            if (ct())
              (r = lt(r)),
                (s = lt(s)),
                p.JS_StartUpgradeEx(r, s).then(
                  function (e) {
                    n.resolve(e);
                  },
                  function () {
                    n.reject(o);
                  }
                );
            else {
              var o = p.HWP_StartUpgrade(r, s, e.szAuth, t.szFileName);
              0 === o ? n.resolve(o) : n.reject(o);
            }
            return n;
          }),
          (It.prototype.set3DZoom = function (e, n, r, s) {
            var o = n.iChannelID,
              i = "";
            if (
              ((i =
                o <= e.iAnalogChannelNum
                  ? F(
                      this.CGI.set3DZoom.analog,
                      e.szHttpProtocol,
                      e.szIP,
                      e.iCGIPort,
                      n.iChannelID
                    )
                  : n.bShttpIPChannel
                  ? F(
                      this.CGI.set3DZoom.digital,
                      e.szHttpProtocol,
                      e.szIP,
                      e.iCGIPort,
                      n.iChannelID -
                        e.oStreamCapa.iIpChanBase +
                        1 +
                        e.iAnalogChannelNum
                    )
                  : F(
                      this.CGI.set3DZoom.digital,
                      e.szHttpProtocol,
                      e.szIP,
                      e.iCGIPort,
                      n.iChannelID
                    )),
              ct())
            )
              var c = S.loadXML(r),
                l = parseInt(255 * (r.startPos[0] / a), 10),
                d = parseInt(255 * (r.startPos[1] / u), 10),
                p = parseInt(255 * (r.endPos[0] / a), 10),
                f = parseInt(255 * (r.endPos[1] / u), 10);
            else
              var c = S.loadXML(r),
                l = parseInt(
                  t
                    .$XML(c)
                    .find("StartPoint")
                    .eq(0)
                    .find("positionX")
                    .eq(0)
                    .text(),
                  10
                ),
                d = parseInt(
                  t
                    .$XML(c)
                    .find("StartPoint")
                    .eq(0)
                    .find("positionY")
                    .eq(0)
                    .text(),
                  10
                ),
                p = parseInt(
                  t
                    .$XML(c)
                    .find("EndPoint")
                    .eq(0)
                    .find("positionX")
                    .eq(0)
                    .text(),
                  10
                ),
                f = parseInt(
                  t
                    .$XML(c)
                    .find("EndPoint")
                    .eq(0)
                    .find("positionY")
                    .eq(0)
                    .text(),
                  10
                );
            var h =
                "<?xml version='1.0' encoding='UTF-8'?><Position3D><StartPoint><positionX>" +
                l +
                "</positionX>" +
                "<positionY>" +
                (255 - d) +
                "</positionY>" +
                "</StartPoint>" +
                "<EndPoint>" +
                "<positionX>" +
                p +
                "</positionX>" +
                "<positionY>" +
                (255 - f) +
                "</positionY>" +
                "</EndPoint>" +
                "</Position3D>",
              P = new Pt(),
              I = {
                type: "PUT",
                url: i,
                data: h,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(I, s),
              S.extend(I, {
                success: function (e) {
                  s.success && s.success(e);
                },
                error: function (e, t) {
                  s.error && s.error(e, t);
                },
              }),
              P.setRequestParam(I),
              P.submitRequest();
          }),
          (It.prototype.getSDKCapa = function (e, t) {
            var n = F(
                this.CGI.SDKCapabilities,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                async: !1,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (It.prototype.deviceCapturePic = function (e, t, n, r) {
            var t = 100 * t + 1,
              s = -1,
              o = F(
                this.CGI.deviceCapture.channels,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort,
                t
              ),
              i = [];
            if (
              (S.isInt(r.iResolutionWidth) &&
                i.push("videoResolutionWidth=" + r.iResolutionWidth),
              S.isInt(r.iResolutionHeight) &&
                i.push("videoResolutionHeight=" + r.iResolutionHeight),
              i.length > 0 && (o += "?" + i.join("&")),
              ct())
            ) {
              var a = function (e, t) {
                var n = ".jpg";
                return (
                  $("body").append(
                    '<a id="jsplugin_download_a" href="' +
                      e +
                      '" download=' +
                      t +
                      n +
                      '><li id="jsplugin_download_li"></li></a>'
                  ),
                  $("#jsplugin_download_li").trigger("click"),
                  $("#jsplugin_download_a").remove(),
                  0
                );
              };
              (o = lt(o)), (s = a(o, n));
            } else s = p.HWP_DeviceCapturePic(o, e.szAuth, n, r.bDateDir);
            return s;
          }),
          (It.prototype.getSessionV2Cap = function (e, t, n, r, s, o) {
            var i = "";
            i = 2 == n ? "https://" : "http://";
            var a = F(this.CGI.sessionCap, i, t, r, encodeURIComponent(s));
            a = a + "&random:" + e;
            var u = new Pt(),
              c = { type: "GET", url: a, auth: "", success: null, error: null };
            S.extend(c, o),
              S.extend(c, {
                success: function (e) {
                  o.success && o.success(e);
                },
                error: function (e, t) {
                  o.error && o.error(e, t);
                },
              }),
              u.setRequestParam(c),
              u.submitRequest();
          }),
          (It.prototype.getSessionCap = function (e, t, n, r, s) {
            var o = "";
            o = 2 == t ? "https://" : "http://";
            var i = F(this.CGI.sessionCap, o, e, n, encodeURIComponent(r)),
              a = new Pt(),
              u = { type: "GET", url: i, auth: "", success: null, error: null };
            S.extend(u, s),
              S.extend(u, {
                success: function (e) {
                  s.success && s.success(e);
                },
                error: function (e, t) {
                  s.error && s.error(e, t);
                },
              }),
              a.setRequestParam(u),
              a.submitRequest();
          }),
          (It.prototype.sessionV2Login = function (e, n, r, s, o, i, a, u) {
            var c = "";
            c = 2 == r ? "https://" : "http://";
            var l = parseInt(
                t.$XML(a).find("sessionIDVersion").eq(0).text(),
                10
              ),
              d =
                "true" ===
                t.$XML(a).find("isSessionIDValidLongTerm").eq(0).text(),
              p = F(this.CGI.sessionLogin, c, n, s),
              f = t.$XML(a).find("sessionID").eq(0).text(),
              h = t.$XML(a).find("challenge").eq(0).text(),
              P = parseInt(t.$XML(a).find("iterations").eq(0).text(), 10),
              I = !1,
              m = "";
            t.$XML(a).find("isIrreversible", !0).length > 0 &&
              ((I = "true" === t.$XML(a).find("isIrreversible").eq(0).text()),
              (m = t.$XML(a).find("salt").eq(0).text())),
              (this.m_oInfoForLocalPlgin = {
                szRandom: e,
                sessionID: f,
                iterations: P,
                challenge: h,
                user: o,
              });
            var v = S.encodePwd(
                i,
                { challenge: h, userName: o, salt: m, iIterate: P },
                I
              ),
              C = "<SessionLogin>";
            (C += "<userName>" + S.escape(o) + "</userName>"),
              (C += "<password>" + v + "</password>"),
              (C += "<sessionID>" + f + "</sessionID>"),
              (C +=
                "<isSessionIDValidLongTerm>" +
                d +
                "</isSessionIDValidLongTerm>"),
              (C += "<sessionIDVersion>" + l + "</sessionIDVersion>"),
              (C += "</SessionLogin>");
            var y = new Pt(),
              g = {
                type: "POST",
                url: p,
                data: C,
                auth: "",
                success: null,
                error: null,
              };
            S.extend(g, u),
              S.extend(g, {
                success: function (e) {
                  u.success && u.success(e);
                },
                error: function (e, t) {
                  u.error && u.error(e, t);
                },
              }),
              y.setRequestParam(g),
              y.submitRequest();
          }),
          (It.prototype.sessionLogin = function (e, n, r, s, o, i, a) {
            var u = "";
            u = 2 == n ? "https://" : "http://";
            var c = F(this.CGI.sessionLogin, u, e, r),
              l = t.$XML(i).find("sessionID").eq(0).text(),
              d = t.$XML(i).find("challenge").eq(0).text(),
              p = parseInt(t.$XML(i).find("iterations").eq(0).text(), 10),
              f = !1,
              h = "";
            t.$XML(i).find("isIrreversible", !0).length > 0 &&
              ((f = "true" === t.$XML(i).find("isIrreversible").eq(0).text()),
              (h = t.$XML(i).find("salt").eq(0).text()));
            var P = "";
            if (f) {
              (P = S.sha256(s + h + o)), (P = S.sha256(P + d));
              for (var I = 2; p > I; I++) P = S.sha256(P);
            } else {
              P = S.sha256(o) + d;
              for (var I = 1; p > I; I++) P = S.sha256(P);
            }
            var m = "<SessionLogin>";
            (m += "<userName>" + S.escape(s) + "</userName>"),
              (m += "<password>" + P + "</password>"),
              (m += "<sessionID>" + l + "</sessionID>"),
              (m += "</SessionLogin>");
            var v = new Pt(),
              C = {
                type: "POST",
                url: c,
                data: m,
                auth: "",
                success: null,
                error: null,
              };
            S.extend(C, a),
              S.extend(C, {
                success: function (e) {
                  a.success && a.success(e);
                },
                error: function (e, t) {
                  a.error && a.error(e, t);
                },
              }),
              v.setRequestParam(C),
              v.submitRequest();
          }),
          (It.prototype.sessionHeartbeat = function (e, t, n) {
            var r = F(
                this.CGI.sessionHeartbeat,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              s = new Pt(),
              o = {
                type: "PUT",
                url: r,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(o, {
              success: function (e) {
                t && t(e);
              },
              error: function (e, t) {
                n && n(e, t);
              },
            }),
              s.setRequestParam(o),
              s.submitRequest();
          }),
          (It.prototype.sessionLogout = function (e, t) {
            var n = F(
                this.CGI.sessionLogout,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "PUT",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (It.prototype.getSystemCapa = function (e, t) {
            var n = F(
                this.CGI.systemCapabilities,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                async: !1,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          });
        var mt = function () {};
        (mt.prototype.CGI = {
          login: "%s%s:%s/PSIA/Custom/SelfExt/userCheck",
          getAudioInfo: "%s%s:%s/PSIA/Custom/SelfExt/TwoWayAudio/channels",
          getDeviceInfo: "%s%s:%s/PSIA/System/deviceInfo",
          getAnalogChannelInfo: "%s%s:%s/PSIA/System/Video/inputs/channels",
          getDigitalChannel:
            "%s%s:%s/PSIA/Custom/SelfExt/ContentMgmt/DynVideo/inputs/channels",
          getDigitalChannelInfo:
            "%s%s:%s/PSIA/Custom/SelfExt/ContentMgmt/DynVideo/inputs/channels/status",
          getZeroChannelInfo:
            "%s%s:%s/PSIA/Custom/SelfExt/ContentMgmt/ZeroVideo/channels",
          getStreamChannels: {
            analog: "%s%s:%s/PSIA/Streaming/channels",
            digital:
              "%s%s:%s/PSIA/Custom/SelfExt/ContentMgmt/DynStreaming/channels",
          },
          getStreamDynChannels:
            "%s%s:%s/PSIA/Custom/SelfExt/ContentMgmt/DynStreaming/channels",
          startRealPlay: {
            channels: "%s%s:%s/PSIA/streaming/channels/%s",
            zeroChannels:
              "%s%s:%s/PSIA/Custom/SelfExt/ContentMgmt/ZeroStreaming/channels/%s",
          },
          startVoiceTalk: {
            open: "%s%s:%s/PSIA/Custom/SelfExt/TwoWayAudio/channels/%s/open",
            close: "%s%s:%s/PSIA/Custom/SelfExt/TwoWayAudio/channels/%s/close",
            audioData:
              "%s%s:%s/PSIA/Custom/SelfExt/TwoWayAudio/channels/%s/audioData",
          },
          ptzControl: "%s%s:%s/PSIA/PTZ/channels/%s/continuous",
          ptzAutoControl: "%s%s:%s/PSIA/Custom/SelfExt/PTZ/channels/%s/autoptz",
          setPreset: "%s%s:%s/PSIA/PTZ/channels/%s/presets/%s",
          goPreset: "%s%s:%s/PSIA/PTZ/channels/%s/presets/%s/goto",
          ptzFocus: "%s%s:%s/PSIA/System/Video/inputs/channels/%s/focus",
          ptzIris: "%s%s:%s/PSIA/System/Video/inputs/channels/%s/iris",
          getNetworkBond: "%s%s:%s/PSIA/Custom/SelfExt/Bond",
          getNetworkInterface: "%s%s:%s/PSIA/System/Network/interfaces",
          getUPnPPortStatus: "%s%s:%s/PSIA/Custom/SelfExt/UPnP/ports/status",
          getPPPoEStatus: "%s%s:%s/PSIA/Custom/SelfExt/PPPoE/1/status",
          getPortInfo: "%s%s:%s/PSIA/Security/AAA/adminAccesses",
          recordSearch: "%s%s:%s/PSIA/ContentMgmt/search",
          startPlayback:
            "%s%s:%s/PSIA/streaming/tracks/%s?starttime=%s&endtime=%s",
          startDownloadRecord:
            "%s%s:%s/PSIA/Custom/SelfExt/ContentMgmt/download",
          deviceConfig: "%s%s:%s/PSIA/System/configurationData",
          restart: "%s%s:%s/PSIA/System/reboot",
          restore: "%s%s:%s/PSIA/System/factoryReset?mode=%s",
          startUpgrade: {
            upgrade: "%s%s:%s/PSIA/System/updateFirmware",
            status: "%s%s:%s/PSIA/Custom/SelfExt/upgradeStatus",
          },
          set3DZoom: "%s%s:%s/PSIA/Custom/SelfExt/PTZ/channels/%s/Set3DZoom",
          deviceCapture: {
            channels: "%s%s:%s/PSIA/Streaming/channels/%s/picture",
          },
          systemCapabilities: "%s%s:%s/PSIA/System/capabilities",
        }),
          (mt.prototype.login = function (e, n, r, s) {
            var o = 2 == s.protocol ? "https://" : "http://",
              i = F(this.CGI.login, o, e, n),
              a = new Pt(),
              u = { type: "GET", url: i, auth: r, success: null, error: null };
            S.extend(u, s),
              S.extend(u, {
                success: function (e) {
                  "200" == t.$XML(e).find("statusValue").eq(0).text()
                    ? s.success && s.success(e)
                    : s.error && s.error(401, e);
                },
                error: function (e, t) {
                  s.error && s.error(e, t);
                },
              }),
              a.setRequestParam(u),
              a.submitRequest();
          }),
          (mt.prototype.getAudioInfo = function (e, t) {
            var n = F(
                this.CGI.getAudioInfo,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (mt.prototype.getDeviceInfo = function (e, n) {
            var r = F(
                this.CGI.getDeviceInfo,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              s = new Pt(),
              o = {
                type: "GET",
                url: r,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(o, n),
              S.extend(o, {
                success: function (e) {
                  var r = [];
                  r.push("<DeviceInfo>"),
                    r.push(
                      "<deviceName>" +
                        S.escape(t.$XML(e).find("deviceName").eq(0).text()) +
                        "</deviceName>"
                    ),
                    r.push(
                      "<deviceID>" +
                        t.$XML(e).find("deviceID").eq(0).text() +
                        "</deviceID>"
                    ),
                    r.push(
                      "<deviceType>" +
                        t.$XML(e).find("deviceDescription").eq(0).text() +
                        "</deviceType>"
                    ),
                    r.push(
                      "<model>" +
                        t.$XML(e).find("model").eq(0).text() +
                        "</model>"
                    ),
                    r.push(
                      "<serialNumber>" +
                        t.$XML(e).find("serialNumber").eq(0).text() +
                        "</serialNumber>"
                    ),
                    r.push(
                      "<macAddress>" +
                        t.$XML(e).find("macAddress").eq(0).text() +
                        "</macAddress>"
                    ),
                    r.push(
                      "<firmwareVersion>" +
                        t.$XML(e).find("firmwareVersion").eq(0).text() +
                        "</firmwareVersion>"
                    ),
                    r.push(
                      "<firmwareReleasedDate>" +
                        t.$XML(e).find("firmwareReleasedDate").eq(0).text() +
                        "</firmwareReleasedDate>"
                    ),
                    r.push(
                      "<encoderVersion>" +
                        t.$XML(e).find("logicVersion").eq(0).text() +
                        "</encoderVersion>"
                    ),
                    r.push(
                      "<encoderReleasedDate>" +
                        t.$XML(e).find("logicReleasedDate").eq(0).text() +
                        "</encoderReleasedDate>"
                    ),
                    r.push("</DeviceInfo>"),
                    (e = S.loadXML(r.join(""))),
                    n.success && n.success(e);
                },
                error: function (e, t) {
                  n.error && n.error(e, t);
                },
              }),
              s.setRequestParam(o),
              s.submitRequest();
          }),
          (mt.prototype.getSystemCapa = function (e, t) {
            var n = F(
                this.CGI.systemCapabilities,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                async: !1,
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (mt.prototype.getAnalogChannelInfo = function (e, n) {
            var r = F(
                this.CGI.getAnalogChannelInfo,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              s = new Pt(),
              o = {
                type: "GET",
                url: r,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(o, n),
              S.extend(o, {
                success: function (e) {
                  var r = [];
                  r.push("<VideoInputChannelList>");
                  for (
                    var s = t.$XML(e).find("VideoInputChannel", !0),
                      o = 0,
                      i = s.length;
                    i > o;
                    o++
                  ) {
                    var a = s[o];
                    r.push("<VideoInputChannel>"),
                      r.push(
                        "<id>" + t.$XML(a).find("id").eq(0).text() + "</id>"
                      ),
                      r.push(
                        "<inputPort>" +
                          t.$XML(a).find("inputPort").eq(0).text() +
                          "</inputPort>"
                      ),
                      r.push(
                        "<name>" +
                          S.escape(t.$XML(a).find("name").eq(0).text()) +
                          "</name>"
                      ),
                      r.push(
                        "<videoFormat>" +
                          t.$XML(a).find("videoFormat").eq(0).text() +
                          "</videoFormat>"
                      ),
                      r.push("</VideoInputChannel>");
                  }
                  r.push("</VideoInputChannelList>"),
                    (e = S.loadXML(r.join(""))),
                    n.success && n.success(e);
                },
                error: function (e, t) {
                  n.error && n.error(e, t);
                },
              }),
              s.setRequestParam(o),
              s.submitRequest();
          }),
          (mt.prototype.getDigitalChannel = function (e, n) {
            var r = F(
                this.CGI.getDigitalChannel,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              s = new Pt(),
              o = {
                type: "GET",
                url: r,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(o, n),
              S.extend(o, {
                success: function (e) {
                  var r = [];
                  r.push("<InputProxyChannelList>");
                  for (
                    var s = t.$XML(e).find("DynVideoInputChannel", !0),
                      o = 0,
                      i = s.length;
                    i > o;
                    o++
                  ) {
                    var a = s[o];
                    r.push("<InputProxyChannel>"),
                      r.push(
                        "<id>" + t.$XML(a).find("id").eq(0).text() + "</id>"
                      ),
                      r.push(
                        "<name>" +
                          S.escape(t.$XML(a).find("name").eq(0).text()) +
                          "</name>"
                      ),
                      r.push("</InputProxyChannel>");
                  }
                  r.push("</InputProxyChannelList>"),
                    (e = S.loadXML(r.join(""))),
                    n.success && n.success(e);
                },
                error: function (e, t) {
                  n.error && n.error(e, t);
                },
              }),
              s.setRequestParam(o),
              s.submitRequest();
          }),
          (mt.prototype.getDigitalChannelInfo = function (e, n) {
            var r = null,
              s = {};
            if (
              (this.getDigitalChannel(e, {
                async: !1,
                success: function (e) {
                  r = e;
                  for (
                    var n = t.$XML(r).find("InputProxyChannel", !0),
                      o = 0,
                      i = n.length;
                    i > o;
                    o++
                  ) {
                    var a = n[o],
                      u = t.$XML(a).find("id").eq(0).text(),
                      c = t.$XML(a).find("name").eq(0).text();
                    s[u] = c;
                  }
                },
                error: function (e, t) {
                  n.error && n.error(e, t);
                },
              }),
              null !== r)
            ) {
              var o = F(
                  this.CGI.getDigitalChannelInfo,
                  e.szHttpProtocol,
                  e.szIP,
                  e.iCGIPort
                ),
                i = new Pt(),
                a = {
                  type: "GET",
                  url: o,
                  auth: e.szAuth,
                  success: null,
                  error: null,
                };
              S.extend(a, n),
                S.extend(a, {
                  success: function (e) {
                    var r = [];
                    r.push("<InputProxyChannelStatusList>");
                    for (
                      var o = t.$XML(e).find("DynVideoInputChannelStatus", !0),
                        i = 0,
                        a = o.length;
                      a > i;
                      i++
                    ) {
                      var u = o[i],
                        c = t.$XML(u).find("id").eq(0).text();
                      r.push("<InputProxyChannelStatus>"),
                        r.push("<id>" + c + "</id>"),
                        r.push("<sourceInputPortDescriptor>"),
                        r.push(
                          "<proxyProtocol>" +
                            t.$XML(u).find("adminProtocol").eq(0).text() +
                            "</proxyProtocol>"
                        ),
                        r.push(
                          "<addressingFormatType>" +
                            t
                              .$XML(u)
                              .find("addressingFormatType")
                              .eq(0)
                              .text() +
                            "</addressingFormatType>"
                        ),
                        r.push(
                          "<ipAddress>" +
                            t.$XML(u).find("ipAddress").eq(0).text() +
                            "</ipAddress>"
                        ),
                        r.push(
                          "<managePortNo>" +
                            t.$XML(u).find("adminPortNo").eq(0).text() +
                            "</managePortNo>"
                        ),
                        r.push(
                          "<srcInputPort>" +
                            t.$XML(u).find("srcInputPort").eq(0).text() +
                            "</srcInputPort>"
                        ),
                        r.push(
                          "<userName>" +
                            S.escape(t.$XML(u).find("userName").eq(0).text()) +
                            "</userName>"
                        ),
                        r.push(
                          "<streamType>" +
                            t.$XML(u).find("streamType").eq(0).text() +
                            "</streamType>"
                        ),
                        r.push(
                          "<online>" +
                            t.$XML(u).find("online").eq(0).text() +
                            "</online>"
                        ),
                        r.push("<name>" + S.escape(s[c]) + "</name>"),
                        r.push("</sourceInputPortDescriptor>"),
                        r.push("</InputProxyChannelStatus>");
                    }
                    r.push("</InputProxyChannelStatusList>"),
                      (e = S.loadXML(r.join(""))),
                      n.success && n.success(e);
                  },
                  error: function (e, t) {
                    n.error && n.error(e, t);
                  },
                }),
                i.setRequestParam(a),
                i.submitRequest();
            }
          }),
          (mt.prototype.getZeroChannelInfo = function (e, t) {
            var n = F(
                this.CGI.getZeroChannelInfo,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (mt.prototype.getPPPoEStatus = function (e, t) {
            var n = F(
                this.CGI.getPPPoEStatus,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (mt.prototype.getUPnPPortStatus = function (e, t) {
            var n = F(
                this.CGI.getUPnPPortStatus,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (mt.prototype.getNetworkBond = function (e, t) {
            var n = F(
                this.CGI.getNetworkBond,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (mt.prototype.getNetworkInterface = function (e, t) {
            var n = F(
                this.CGI.getNetworkInterface,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (mt.prototype.getPortInfo = function (e, n) {
            var r = F(
                this.CGI.getPortInfo,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              s = new Pt(),
              o = {
                type: "GET",
                url: r,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(o, n),
              S.extend(o, {
                success: function (r) {
                  var s = [];
                  s.push("<AdminAccessProtocolList>");
                  for (
                    var o = t.$XML(r).find("AdminAccessProtocol", !0),
                      i = 0,
                      a = o.length;
                    a > i;
                    i++
                  )
                    o[i],
                      s.push("<AdminAccessProtocol>"),
                      s.push(
                        "<id>" + t.$XML(r).find("id").eq(0).text() + "</id>"
                      ),
                      s.push(
                        "<enabled>" +
                          t.$XML(r).find("enabled").eq(0).text() +
                          "</enabled>"
                      ),
                      s.push(
                        "<protocol>" +
                          t
                            .$XML(r)
                            .find("protocol")
                            .eq(0)
                            .text()
                            .toUpperCase() +
                          "</protocol>"
                      ),
                      s.push(
                        "<portNo>" +
                          t.$XML(r).find("portNo").eq(0).text() +
                          "</portNo>"
                      ),
                      s.push("</AdminAccessProtocol>");
                  C.getStreamChannels(e, {
                    async: !1,
                    success: function (r) {
                      if (t.$XML(r).find("rtspPortNo", !0).length > 0) {
                        var o = parseInt(
                          t.$XML(r).find("rtspPortNo").eq(0).text(),
                          10
                        );
                        s.push("<AdminAccessProtocol>"),
                          s.push("<id>4</id>"),
                          s.push("<enabled>true</enabled>"),
                          s.push("<protocol>RTSP</protocol>"),
                          s.push("<portNo>" + o + "</portNo>"),
                          s.push("</AdminAccessProtocol>"),
                          s.push("</AdminAccessProtocolList>");
                        var i = S.loadXML(s.join(""));
                        n.success && n.success(i);
                      } else
                        C.getStreamDynChannels(e, {
                          async: !1,
                          success: function (e) {
                            if (t.$XML(e).find("rtspPortNo", !0).length > 0) {
                              var r = parseInt(
                                t.$XML(e).find("rtspPortNo").eq(0).text(),
                                10
                              );
                              s.push("<AdminAccessProtocol>"),
                                s.push("<id>4</id>"),
                                s.push("<enabled>true</enabled>"),
                                s.push("<protocol>RTSP</protocol>"),
                                s.push("<portNo>" + r + "</portNo>"),
                                s.push("</AdminAccessProtocol>"),
                                s.push("</AdminAccessProtocolList>");
                              var o = S.loadXML(s.join(""));
                              n.success && n.success(o);
                            }
                          },
                          error: function () {
                            n.error && n.error();
                          },
                        });
                    },
                    error: function () {
                      n.error && n.error();
                    },
                  });
                },
                error: function () {
                  var r = [];
                  r.push("<AdminAccessProtocolList>"),
                    C.getStreamChannels(e, {
                      async: !1,
                      success: function (s) {
                        if (t.$XML(s).find("rtspPortNo", !0).length > 0) {
                          var o = parseInt(
                            t.$XML(s).find("rtspPortNo").eq(0).text(),
                            10
                          );
                          r.push("<AdminAccessProtocol>"),
                            r.push("<id>4</id>"),
                            r.push("<enabled>true</enabled>"),
                            r.push("<protocol>RTSP</protocol>"),
                            r.push("<portNo>" + o + "</portNo>"),
                            r.push("</AdminAccessProtocol>"),
                            r.push("</AdminAccessProtocolList>");
                          var i = S.loadXML(r.join(""));
                          n.success && n.success(i);
                        } else
                          C.getStreamDynChannels(e, {
                            async: !1,
                            success: function (e) {
                              if (t.$XML(e).find("rtspPortNo", !0).length > 0) {
                                var s = parseInt(
                                  t.$XML(e).find("rtspPortNo").eq(0).text(),
                                  10
                                );
                                r.push("<AdminAccessProtocol>"),
                                  r.push("<id>4</id>"),
                                  r.push("<enabled>true</enabled>"),
                                  r.push("<protocol>RTSP</protocol>"),
                                  r.push("<portNo>" + s + "</portNo>"),
                                  r.push("</AdminAccessProtocol>"),
                                  r.push("</AdminAccessProtocolList>");
                                var o = S.loadXML(r.join(""));
                                n.success && n.success(o);
                              }
                            },
                            error: function () {
                              n.error && n.error();
                            },
                          });
                      },
                      error: function () {
                        n.error && n.error();
                      },
                    });
                },
              }),
              s.setRequestParam(o),
              s.submitRequest();
          }),
          (mt.prototype.getStreamChannels = function (e, t) {
            if (0 != e.iAnalogChannelNum)
              var n = F(
                this.CGI.getStreamChannels.analog,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              );
            else
              var n = F(
                this.CGI.getStreamChannels.digital,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              );
            var r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (mt.prototype.getStreamDynChannels = function (e, t) {
            var n = F(
                this.CGI.getStreamDynChannels,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = new Pt(),
              s = {
                type: "GET",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (mt.prototype.startRealPlay = function (e, t) {
            var n = 100 * t.iChannelID + t.iStreamType,
              r = "",
              s = e.szIP;
            "rtsp://" === t.urlProtocol && (s = V(s)),
              (r = t.bZeroChannel
                ? F(t.cgi.zeroChannels, t.urlProtocol, s, t.iPort, n)
                : F(t.cgi.channels, t.urlProtocol, s, t.iPort, n));
            var o = p.HWP_Play(r, e.szAuth, t.iWndIndex, "", "");
            if (0 == o) {
              var i = new ht();
              (i.iIndex = t.iWndIndex),
                (i.szIP = e.szIP),
                (i.iCGIPort = e.iCGIPort),
                (i.szDeviceIdentify = e.szDeviceIdentify),
                (i.iChannelID = t.iChannelID),
                (i.iPlayStatus = T),
                I.push(i);
            }
            return o;
          }),
          (mt.prototype.startVoiceTalk = function (e, t) {
            var n = F(
                this.CGI.startVoiceTalk.open,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort,
                t
              ),
              r = F(
                this.CGI.startVoiceTalk.close,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort,
                t
              ),
              s = F(
                this.CGI.startVoiceTalk.audioData,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort,
                t
              ),
              o = p.HWP_StartVoiceTalkEx(
                n,
                r,
                s,
                e.szAuth,
                e.iAudioTypeoDeviceInfo.m_iAudioBitRate,
                e.m_iAudioSamplingRate
              );
            return o;
          }),
          (mt.prototype.ptzAutoControl = function (e, t, n, r) {
            var s = n.iChannelID,
              o = "",
              i = "";
            if (
              ((r.iPTZSpeed = r.iPTZSpeed < 7 ? 15 * r.iPTZSpeed : 100),
              t && (r.iPTZSpeed = 0),
              e.szDeviceType != E)
            )
              (o = F(
                this.CGI.ptzAutoControl,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort,
                s
              )),
                (i =
                  "<?xml version='1.0' encoding='UTF-8'?><PTZData><pan>" +
                  r.iPTZSpeed +
                  "</pan>" +
                  "<tilt>0</tilt>" +
                  "</PTZData>");
            else {
              var a = 99;
              t && (a = 96),
                (o = F(
                  this.CGI.goPreset,
                  e.szHttpProtocol,
                  e.szIP,
                  e.iCGIPort,
                  s,
                  a
                ));
            }
            var u = new Pt(),
              c = {
                type: "PUT",
                url: o,
                async: !1,
                auth: e.szAuth,
                data: i,
                success: null,
                error: null,
              },
              l = this;
            S.extend(c, r),
              S.extend(c, {
                success: function (e) {
                  (n.bPTZAuto = !n.bPTZAuto), r.success && r.success(e);
                },
                error: function (t, s) {
                  if (e.szDeviceType != E) {
                    o = F(
                      l.CGI.ptzControl,
                      e.szHttpProtocol,
                      e.szIP,
                      e.iCGIPort,
                      n.iChannelID
                    );
                    var a = new Pt(),
                      u = {
                        type: "PUT",
                        url: o,
                        async: !1,
                        auth: e.szAuth,
                        data: i,
                        success: null,
                        error: null,
                      };
                    S.extend(u, r), a.setRequestParam(u), a.submitRequest();
                  } else r.error && r.error(t, s);
                },
              }),
              u.setRequestParam(c),
              u.submitRequest();
          }),
          (mt.prototype.ptzControl = function (e, t, n, r) {
            var s = (n.iChannelID, "");
            n.bPTZAuto && this.ptzAutoControl(e, !0, n, { iPTZSpeed: 0 }),
              (r.iPTZSpeed = t ? 0 : r.iPTZSpeed < 7 ? 15 * r.iPTZSpeed : 100);
            var o = [
                {},
                { pan: 0, tilt: r.iPTZSpeed },
                { pan: 0, tilt: -r.iPTZSpeed },
                { pan: -r.iPTZSpeed, tilt: 0 },
                { pan: r.iPTZSpeed, tilt: 0 },
                { pan: -r.iPTZSpeed, tilt: r.iPTZSpeed },
                { pan: -r.iPTZSpeed, tilt: -r.iPTZSpeed },
                { pan: r.iPTZSpeed, tilt: r.iPTZSpeed },
                { pan: r.iPTZSpeed, tilt: -r.iPTZSpeed },
                {},
                { speed: r.iPTZSpeed },
                { speed: -r.iPTZSpeed },
                { speed: r.iPTZSpeed },
                { speed: -r.iPTZSpeed },
                { speed: r.iPTZSpeed },
                { speed: -r.iPTZSpeed },
              ],
              i = "",
              a = {};
            switch (r.iPTZIndex) {
              case 1:
              case 2:
              case 3:
              case 4:
              case 5:
              case 6:
              case 7:
              case 8:
                (a = this.CGI.ptzControl),
                  (i =
                    "<?xml version='1.0' encoding='UTF-8'?><PTZData><pan>" +
                    o[r.iPTZIndex].pan +
                    "</pan>" +
                    "<tilt>" +
                    o[r.iPTZIndex].tilt +
                    "</tilt>" +
                    "</PTZData>");
                break;
              case 10:
              case 11:
                (a = this.CGI.ptzControl),
                  (i =
                    "<?xml version='1.0' encoding='UTF-8'?><PTZData><zoom>" +
                    o[r.iPTZIndex].speed +
                    "</zoom>" +
                    "</PTZData>");
                break;
              case 12:
              case 13:
                (a = this.CGI.ptzFocus),
                  (i =
                    "<?xml version='1.0' encoding='UTF-8'?><FocusData><focus>" +
                    o[r.iPTZIndex].speed +
                    "</focus>" +
                    "</FocusData>");
                break;
              case 14:
              case 15:
                (a = this.CGI.ptzIris),
                  (i =
                    "<?xml version='1.0' encoding='UTF-8'?><IrisData><iris>" +
                    o[r.iPTZIndex].speed +
                    "</iris>" +
                    "</IrisData>");
                break;
              default:
                return r.error && r.error(), void 0;
            }
            s = F(a, e.szHttpProtocol, e.szIP, e.iCGIPort, n.iChannelID);
            var u = new Pt(),
              c = {
                type: "PUT",
                url: s,
                async: !1,
                auth: e.szAuth,
                data: i,
                success: null,
                error: null,
              };
            S.extend(c, r),
              S.extend(c, {
                success: function (e) {
                  r.success && r.success(e);
                },
                error: function (e, t) {
                  r.error && r.error(e, t);
                },
              }),
              u.setRequestParam(c),
              u.submitRequest();
          }),
          (mt.prototype.setPreset = function (e, t, n) {
            var r = (t.iChannelID, ""),
              s = "";
            (r = F(
              this.CGI.setPreset,
              e.szHttpProtocol,
              e.szIP,
              e.iCGIPort,
              t.iChannelID,
              n.iPresetID
            )),
              (s = "<?xml version='1.0' encoding='UTF-8'?>"),
              (s += "<PTZPreset>"),
              (s += "<id>" + n.iPresetID + "</id>"),
              e.szDeviceType != E &&
                (s += "<presetName>Preset" + n.iPresetID + "</presetName>"),
              (s += "</PTZPreset>");
            var o = new Pt(),
              i = {
                type: "PUT",
                url: r,
                auth: e.szAuth,
                data: s,
                success: null,
                error: null,
              };
            S.extend(i, n),
              S.extend(i, {
                success: function (e) {
                  n.success && n.success(e);
                },
                error: function (e, t) {
                  n.error && n.error(e, t);
                },
              }),
              o.setRequestParam(i),
              o.submitRequest();
          }),
          (mt.prototype.goPreset = function (e, t, n) {
            var r = (t.iChannelID, "");
            r = F(
              this.CGI.goPreset,
              e.szHttpProtocol,
              e.szIP,
              e.iCGIPort,
              t.iChannelID,
              n.iPresetID
            );
            var s = new Pt(),
              o = {
                type: "PUT",
                url: r,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(o, n),
              S.extend(o, {
                success: function (e) {
                  n.success && n.success(e);
                },
                error: function (e, t) {
                  n.error && n.error(e, t);
                },
              }),
              s.setRequestParam(o),
              s.submitRequest();
          }),
          (mt.prototype.recordSearch = function (e, n) {
            var r = "",
              s = "",
              i = n.iChannelID,
              a = n.iStreamType,
              u = n.szStartTime.replace(" ", "T") + "Z",
              c = n.szEndTime.replace(" ", "T") + "Z";
            (r = F(
              this.CGI.recordSearch,
              e.szHttpProtocol,
              e.szIP,
              e.iCGIPort
            )),
              (s =
                "<?xml version='1.0' encoding='UTF-8'?><CMSearchDescription><searchID>" +
                new o() +
                "</searchID>" +
                "<trackList><trackID>" +
                (100 * i + a) +
                "</trackID></trackList>" +
                "<timeSpanList>" +
                "<timeSpan>" +
                "<startTime>" +
                u +
                "</startTime>" +
                "<endTime>" +
                c +
                "</endTime>" +
                "</timeSpan>" +
                "</timeSpanList>" +
                "<maxResults>40</maxResults>" +
                "<searchResultPostion>" +
                n.iSearchPos +
                "</searchResultPostion>" +
                "<metadataList>" +
                "<metadataDescriptor>//metadata.psia.org/VideoMotion</metadataDescriptor>" +
                "</metadataList>" +
                "</CMSearchDescription>");
            var l = new Pt(),
              d = {
                type: "POST",
                url: r,
                auth: e.szAuth,
                data: s,
                success: null,
                error: null,
              };
            S.extend(d, n),
              S.extend(d, {
                success: function (e) {
                  var r = [];
                  r.push("<CMSearchResult>"),
                    r.push(
                      "<responseStatus>" +
                        t.$XML(e).find("responseStatus").eq(0).text() +
                        "</responseStatus>"
                    ),
                    r.push(
                      "<responseStatusStrg>" +
                        t.$XML(e).find("responseStatusStrg").eq(0).text() +
                        "</responseStatusStrg>"
                    ),
                    r.push(
                      "<numOfMatches>" +
                        t.$XML(e).find("numOfMatches").eq(0).text() +
                        "</numOfMatches>"
                    ),
                    r.push("<matchList>");
                  for (
                    var s = t.$XML(e).find("searchMatchItem", !0),
                      o = 0,
                      i = s.length;
                    i > o;
                    o++
                  ) {
                    var a = s[o];
                    r.push("<searchMatchItem>"),
                      r.push(
                        "<trackID>" +
                          t.$XML(a).find("trackID").eq(0).text() +
                          "</trackID>"
                      ),
                      r.push(
                        "<startTime>" +
                          t.$XML(a).find("startTime").eq(0).text() +
                          "</startTime>"
                      ),
                      r.push(
                        "<endTime>" +
                          t.$XML(a).find("endTime").eq(0).text() +
                          "</endTime>"
                      ),
                      r.push(
                        "<playbackURI>" +
                          S.escape(t.$XML(a).find("playbackURI").eq(0).text()) +
                          "</playbackURI>"
                      ),
                      r.push(
                        "<metadataDescriptor>" +
                          t
                            .$XML(a)
                            .find("metadataDescriptor")
                            .eq(0)
                            .text()
                            .split("/")[1] +
                          "</metadataDescriptor>"
                      ),
                      r.push("</searchMatchItem>");
                  }
                  r.push("</matchList>"),
                    r.push("</CMSearchResult>"),
                    (e = S.loadXML(r.join(""))),
                    n.success && n.success(e);
                },
                error: function (e, t) {
                  n.error && n.error(e, t);
                },
              }),
              l.setRequestParam(d),
              l.submitRequest();
          }),
          (mt.prototype.startPlayback = function (e, t) {
            var n = t.iWndIndex,
              r = t.szStartTime,
              s = t.szEndTime,
              o = e.szIP;
            "rtsp://" === t.urlProtocol && (o = V(o));
            var i = F(t.cgi, t.urlProtocol, o, t.iPort, t.iChannelID, r, s),
              a = p.HWP_Play(i, e.szAuth, n, r, s);
            if (0 == a) {
              var u = new ht();
              (u.iIndex = n),
                (u.szIP = e.szIP),
                (u.iCGIPort = e.iCGIPort),
                (u.szDeviceIdentify = e.szDeviceIdentify),
                (u.iChannelID = t.iChannelID),
                (u.iPlayStatus = A),
                I.push(u);
            }
            return a;
          }),
          (mt.prototype.reversePlayback = function (e, t) {
            var n = t.iWndIndex,
              r = t.szStartTime,
              s = t.szEndTime,
              o = e.szIP;
            "rtsp://" === t.urlProtocol && (o = V(o));
            var i = F(t.cgi, t.urlProtocol, o, t.iPort, t.iChannelID, r, s),
              a = p.HWP_ReversePlay(i, e.szAuth, n, r, s);
            if (0 == a) {
              var u = new ht();
              (u.iIndex = n),
                (u.szIP = e.szIP),
                (u.iCGIPort = e.iCGIPort),
                (u.szDeviceIdentify = e.szDeviceIdentify),
                (u.iChannelID = t.iChannelID),
                (u.iPlayStatus = q),
                I.push(u);
            }
            return a;
          }),
          (mt.prototype.startDownloadRecord = function (e, t) {
            var n = F(
                this.CGI.startDownloadRecord,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r =
                "<?xml version='1.0' encoding='UTF-8'?><downloadRequest><playbackURI> " +
                S.escape(t.szPlaybackURI) +
                "</playbackURI>" +
                "</downloadRequest>";
            return p.HWP_StartDownload(
              n,
              e.szAuth,
              t.szFileName,
              r,
              t.bDateDir
            );
          }),
          (mt.prototype.exportDeviceConfig = function (e) {
            var t = F(
              this.CGI.downloaddeviceConfig,
              e.szHttpProtocol,
              e.szIP,
              e.iCGIPort
            );
            return ct() ? -1 : p.HWP_ExportDeviceConfig(t, e.szAuth, "", 0);
          }),
          (mt.prototype.importDeviceConfig = function (e, t) {
            var n = F(
              this.CGI.uploaddeviceConfig,
              e.szHttpProtocol,
              e.szIP,
              e.iCGIPort
            );
            return p.HWP_ImportDeviceConfig(n, e.szAuth, t.szFileName, 0);
          }),
          (mt.prototype.restart = function (e, t) {
            var n = F(this.CGI.restart, e.szHttpProtocol, e.szIP, e.iCGIPort),
              r = new Pt(),
              s = {
                type: "PUT",
                url: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(s, t),
              S.extend(s, {
                success: function (e) {
                  t.success && t.success(e);
                },
                error: function (e, n) {
                  t.error && t.error(e, n);
                },
              }),
              r.setRequestParam(s),
              r.submitRequest();
          }),
          (mt.prototype.restore = function (e, t, n) {
            var r = F(
                this.CGI.restore,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort,
                t
              ),
              s = new Pt(),
              o = {
                type: "PUT",
                url: r,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(o, n),
              S.extend(o, {
                success: function (e) {
                  n.success && n.success(e);
                },
                error: function (e, t) {
                  n.error && n.error(e, t);
                },
              }),
              s.setRequestParam(o),
              s.submitRequest();
          }),
          (mt.prototype.startUpgrade = function (e, t) {
            var n = F(
                this.CGI.startUpgrade.upgrade,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              ),
              r = F(
                this.CGI.startUpgrade.status,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort
              );
            return p.HWP_StartUpgrade(n, r, e.szAuth, t.szFileName);
          }),
          (mt.prototype.set3DZoom = function (e, t, n, r) {
            var s = F(
                this.CGI.set3DZoom,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort,
                t.iChannelID
              ),
              o = new Pt(),
              i = {
                type: "PUT",
                url: s,
                data: n,
                auth: e.szAuth,
                success: null,
                error: null,
              };
            S.extend(i, r),
              S.extend(i, {
                success: function (e) {
                  r.success && r.success(e);
                },
                error: function (e, t) {
                  r.error && r.error(e, t);
                },
              }),
              o.setRequestParam(i),
              o.submitRequest();
          }),
          (mt.prototype.deviceCapturePic = function (e, t, n, r) {
            var t = 100 * t + 1,
              s = F(
                this.CGI.deviceCapture.channels,
                e.szHttpProtocol,
                e.szIP,
                e.iCGIPort,
                t
              ),
              o = [];
            return (
              S.isInt(r.iResolutionWidth) &&
                o.push("videoResolutionWidth=" + r.iResolutionWidth),
              S.isInt(r.iResolutionHeight) &&
                o.push("videoResolutionHeight=" + r.iResolutionHeight),
              o.length > 0 && (s += "?" + o.join("&")),
              p.HWP_DeviceCapturePic(s, e.szAuth, n, r.bDateDir)
            );
          });
        var vt = function () {};
        (vt.prototype._alert = function (e) {
          d.bDebugMode && console.log(e);
        }),
          (function (e) {
            var t = function (e) {
              (this.elems = []),
                (this.length = 0),
                (this.length = this.elems.push(e));
            };
            (t.prototype.find = function (e, t) {
              var n = this.elems[this.length - 1]
                ? this.elems[this.length - 1].getElementsByTagName(e)
                : [];
              return (this.length = this.elems.push(n)), t ? n : this;
            }),
              (t.prototype.eq = function (e, t) {
                var n = this.elems[this.length - 1].length,
                  r = null;
                return (
                  n > 0 && n > e && (r = this.elems[this.length - 1][e]),
                  (this.length = this.elems.push(r)),
                  t ? r : this
                );
              }),
              (t.prototype.text = function (e) {
                return this.elems[this.length - 1]
                  ? e
                    ? (window.DOMParser
                        ? (this.elems[this.length - 1].textContent = e)
                        : (this.elems[this.length - 1].text = e),
                      void 0)
                    : window.DOMParser
                    ? this.elems[this.length - 1].textContent
                    : this.elems[this.length - 1].text
                  : "";
              }),
              (t.prototype.attr = function (e) {
                if (this.elems[this.length - 1]) {
                  var t =
                    this.elems[this.length - 1].attributes.getNamedItem(e);
                  return t ? t.value : "";
                }
              }),
              (e.$XML = function (e) {
                return new t(e);
              });
          })(this);
        var Ct = function () {};
        (Ct.prototype.extend = function () {
          for (
            var e, t = arguments[0] || {}, n = 1, r = arguments.length;
            r > n;
            n++
          )
            if (null != (e = arguments[n]))
              for (var s in e) {
                var o = (t[s], e[s]);
                t !== o &&
                  ("object" == typeof o
                    ? (t[s] = this.extend({}, o))
                    : void 0 !== o && (t[s] = o));
              }
          return t;
        }),
          (Ct.prototype.browser = function () {
            var e = /(chrome)[ \/]([\w.]+)/,
              t = /(safari)[ \/]([\w.]+)/,
              n = /(opera)(?:.*version)?[ \/]([\w.]+)/,
              r = /(msie) ([\w.]+)/,
              s = /(trident.*rv:)([\w.]+)/,
              o = /(mozilla)(?:.*? rv:([\w.]+))?/,
              i = navigator.userAgent.toLowerCase(),
              a = e.exec(i) ||
                t.exec(i) ||
                n.exec(i) ||
                r.exec(i) ||
                s.exec(i) ||
                (i.indexOf("compatible") < 0 && o.exec(i)) || ["unknow", "0"];
            a.length > 0 && a[1].indexOf("trident") > -1 && (a[1] = "msie");
            var u = {};
            return (u[a[1]] = !0), (u.version = a[2]), u;
          }),
          (Ct.prototype.loadXML = function (e) {
            if (null == e || "" == e) return null;
            var t = null;
            if (window.DOMParser) {
              var n = new DOMParser();
              t = n.parseFromString(e, "text/xml");
            } else
              (t = new ActiveXObject("Microsoft.XMLDOM")),
                (t.async = !1),
                t.loadXML(e);
            return t;
          }),
          (Ct.prototype.toXMLStr = function (e) {
            var t = "";
            try {
              var n = new XMLSerializer();
              t = n.serializeToString(e);
            } catch (r) {
              try {
                t = e.xml;
              } catch (r) {
                return "";
              }
            }
            return (
              -1 == t.indexOf("<?xml") &&
                (t = "<?xml version='1.0' encoding='utf-8'?>" + t),
              t
            );
          }),
          (Ct.prototype.escape = function (e) {
            return e
              ? e
                  .replace(/&/g, "&amp;")
                  .replace(/</g, "&lt;")
                  .replace(/>/g, "&gt;")
              : e;
          }),
          (Ct.prototype.encodePwd = function (e, t, n) {
            var r = "";
            if (n) {
              (r = S.sha256(t.userName + t.salt + e)),
                (r = S.sha256(r + t.challenge));
              for (var s = 2; s < t.iIterate; s++) r = S.sha256(r);
            } else {
              r = S.sha256(e) + t.challenge;
              for (var s = 1; s < t.iIterate; s++) r = S.sha256(r);
            }
            return r;
          }),
          (Ct.prototype.dateFormat = function (e, t) {
            var n = {
              "M+": e.getMonth() + 1,
              "d+": e.getDate(),
              "h+": e.getHours(),
              "m+": e.getMinutes(),
              "s+": e.getSeconds(),
              "q+": Math.floor((e.getMonth() + 3) / 3),
              S: e.getMilliseconds(),
            };
            /(y+)/.test(t) &&
              (t = t.replace(
                RegExp.$1,
                (e.getFullYear() + "").substr(4 - RegExp.$1.length)
              ));
            for (var r in n)
              new RegExp("(" + r + ")").test(t) &&
                (t = t.replace(
                  RegExp.$1,
                  1 == RegExp.$1.length
                    ? n[r]
                    : ("00" + n[r]).substr(("" + n[r]).length)
                ));
            return t;
          }),
          (Ct.prototype.Base64 = {
            _keyStr:
              "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
            encode: function (e) {
              var t,
                n,
                r,
                s,
                o,
                i,
                a,
                u = "",
                c = 0;
              for (e = Ct.prototype.Base64._utf8_encode(e); c < e.length; )
                (t = e.charCodeAt(c++)),
                  (n = e.charCodeAt(c++)),
                  (r = e.charCodeAt(c++)),
                  (s = t >> 2),
                  (o = ((3 & t) << 4) | (n >> 4)),
                  (i = ((15 & n) << 2) | (r >> 6)),
                  (a = 63 & r),
                  isNaN(n) ? (i = a = 64) : isNaN(r) && (a = 64),
                  (u =
                    u +
                    this._keyStr.charAt(s) +
                    this._keyStr.charAt(o) +
                    this._keyStr.charAt(i) +
                    this._keyStr.charAt(a));
              return u;
            },
            decode: function (e) {
              var t,
                n,
                r,
                s,
                o,
                i,
                a,
                u = "",
                c = 0;
              for (e = e.replace(/[^A-Za-z0-9\+\/\=]/g, ""); c < e.length; )
                (s = this._keyStr.indexOf(e.charAt(c++))),
                  (o = this._keyStr.indexOf(e.charAt(c++))),
                  (i = this._keyStr.indexOf(e.charAt(c++))),
                  (a = this._keyStr.indexOf(e.charAt(c++))),
                  (t = (s << 2) | (o >> 4)),
                  (n = ((15 & o) << 4) | (i >> 2)),
                  (r = ((3 & i) << 6) | a),
                  (u += String.fromCharCode(t)),
                  64 != i && (u += String.fromCharCode(n)),
                  64 != a && (u += String.fromCharCode(r));
              return (u = Ct.prototype.Base64._utf8_decode(u));
            },
            _utf8_encode: function (e) {
              e = e.replace(/\r\n/g, "\n");
              for (var t = "", n = 0; n < e.length; n++) {
                var r = e.charCodeAt(n);
                128 > r
                  ? (t += String.fromCharCode(r))
                  : r > 127 && 2048 > r
                  ? ((t += String.fromCharCode(192 | (r >> 6))),
                    (t += String.fromCharCode(128 | (63 & r))))
                  : ((t += String.fromCharCode(224 | (r >> 12))),
                    (t += String.fromCharCode(128 | (63 & (r >> 6)))),
                    (t += String.fromCharCode(128 | (63 & r))));
              }
              return t;
            },
            _utf8_decode: function (e) {
              for (var t = "", n = 0, r = (c1 = c2 = 0); n < e.length; )
                (r = e.charCodeAt(n)),
                  128 > r
                    ? ((t += String.fromCharCode(r)), n++)
                    : r > 191 && 224 > r
                    ? ((c2 = e.charCodeAt(n + 1)),
                      (t += String.fromCharCode(((31 & r) << 6) | (63 & c2))),
                      (n += 2))
                    : ((c2 = e.charCodeAt(n + 1)),
                      (c3 = e.charCodeAt(n + 2)),
                      (t += String.fromCharCode(
                        ((15 & r) << 12) | ((63 & c2) << 6) | (63 & c3)
                      )),
                      (n += 3));
              return t;
            },
          }),
          (Ct.prototype.createEventScript = function (e, t, n) {
            var r = document.createElement("script");
            (r.htmlFor = e),
              (r.event = t),
              (r.innerHTML = n),
              document.body.parentNode.appendChild(r);
          }),
          (Ct.prototype.isInt = function (e) {
            return /^\d+$/.test(e);
          }),
          (Ct.prototype.getDirName = function () {
            var e = "";
            if ("" !== d.szBasePath) e = d.szBasePath;
            else {
              var t = /[^?#]*\//,
                n = document.getElementById("videonode");
              if (n) e = n.src.match(t)[0];
              else {
                for (var r = document.scripts, s = 0, o = r.length; o > s; s++)
                  if (r[s].src.indexOf("webVideoCtrl.js") > -1) {
                    n = r[s];
                    break;
                  }
                n && (e = n.src.match(t)[0]);
              }
            }
            return e;
          }),
          (Ct.prototype.loadScript = function (e, t) {
            var n = document.createElement("script");
            (n.type = "text/javascript"),
              (n.onload = function () {
                t();
              }),
              (n.src = e),
              document.getElementsByTagName("head")[0].appendChild(n);
          }),
          (Ct.prototype.encodeString = function (e) {
            return e
              ? e
                  .replace(/&/g, "&amp;")
                  .replace(/</g, "&lt;")
                  .replace(/>/g, "&gt;")
              : "";
          }),
          (Ct.prototype.getIrreversibleKey = function (e, t) {
            var n = e;
            if (oSecurityCap.oIrreversibleEncrypt.bSupport) {
              var r = oSecurityCap.oIrreversibleEncrypt.salt;
              return S.sha256(t + r + e);
            }
            return n;
          }),
          (Ct.prototype.strToAESKey = function (e, t) {
            var n = "";
            if (oSecurityCap.iKeyIterateNum > 0) {
              n = S.sha256(S.getIrreversibleKey(e, t) + "AaBbCcDd1234!@#$");
              for (var r = 1; r < oSecurityCap.iKeyIterateNum; r++)
                n = S.sha256(n);
            }
            return (n = n && n.substring(0, 32));
          }),
          (Ct.prototype.exportPasswordDeviceConfig = function (e, t) {
            var n = MD5(new Date().getTime().toString()),
              r = S.encodeAES(S.Base64.encode(S.encodeString(t)), szAESKey, n);
            return e + "?secretkey=" + r + "&security=1&iv=" + n;
          }),
          (Ct.prototype.encodeAES = function (e, t, n, r) {
            var s = "";
            if ("ecb" === r)
              for (var o = e.length, i = 0; o > 0; )
                (s +=
                  o > 16
                    ? aes_encrypt(e.substring(i, i + 16), t, !0)
                    : aes_encrypt(e.substring(i), t, !0)),
                  (o -= 16),
                  (i += 16);
            else {
              "undefined" == typeof n &&
                (n = "6cd9616beb39d4034fdebe107df9a399");
              var a = CryptoJS.enc.Hex.parse(t),
                u = CryptoJS.enc.Hex.parse(n),
                c = CryptoJS.AES.encrypt(e, a, {
                  mode: CryptoJS.mode.CBC,
                  iv: u,
                  padding: CryptoJS.pad.Pkcs7,
                });
              s = c.ciphertext.toString();
            }
            return s;
          }),
          (Ct.prototype.sha256 = function (e) {
            function t(e, t) {
              var n = (65535 & e) + (65535 & t);
              return (((e >> 16) + (t >> 16) + (n >> 16)) << 16) | (65535 & n);
            }
            function n(e, t) {
              return (e >>> t) | (e << (32 - t));
            }
            return (
              (e = (function (e) {
                for (
                  var e = e.replace(/\r\n/g, "\n"), t = "", n = 0;
                  n < e.length;
                  n++
                ) {
                  var r = e.charCodeAt(n);
                  128 > r
                    ? (t += String.fromCharCode(r))
                    : (r > 127 && 2048 > r
                        ? (t += String.fromCharCode(192 | (r >> 6)))
                        : ((t += String.fromCharCode(224 | (r >> 12))),
                          (t += String.fromCharCode(128 | (63 & (r >> 6))))),
                      (t += String.fromCharCode(128 | (63 & r))));
                }
                return t;
              })(e)),
              (function (e) {
                for (var t = "", n = 0; n < 4 * e.length; n++)
                  t +=
                    "0123456789abcdef".charAt(
                      15 & (e[n >> 2] >> (8 * (3 - (n % 4)) + 4))
                    ) +
                    "0123456789abcdef".charAt(
                      15 & (e[n >> 2] >> (8 * (3 - (n % 4))))
                    );
                return t;
              })(
                (function (e, r) {
                  var s,
                    o,
                    i,
                    a,
                    u,
                    c,
                    l,
                    d,
                    p,
                    f,
                    h,
                    P,
                    I = [
                      1116352408, 1899447441, 3049323471, 3921009573, 961987163,
                      1508970993, 2453635748, 2870763221, 3624381080, 310598401,
                      607225278, 1426881987, 1925078388, 2162078206, 2614888103,
                      3248222580, 3835390401, 4022224774, 264347078, 604807628,
                      770255983, 1249150122, 1555081692, 1996064986, 2554220882,
                      2821834349, 2952996808, 3210313671, 3336571891,
                      3584528711, 113926993, 338241895, 666307205, 773529912,
                      1294757372, 1396182291, 1695183700, 1986661051,
                      2177026350, 2456956037, 2730485921, 2820302411,
                      3259730800, 3345764771, 3516065817, 3600352804,
                      4094571909, 275423344, 430227734, 506948616, 659060556,
                      883997877, 958139571, 1322822218, 1537002063, 1747873779,
                      1955562222, 2024104815, 2227730452, 2361852424,
                      2428436474, 2756734187, 3204031479, 3329325298,
                    ],
                    m = [
                      1779033703, 3144134277, 1013904242, 2773480762,
                      1359893119, 2600822924, 528734635, 1541459225,
                    ],
                    v = Array(64);
                  for (
                    e[r >> 5] |= 128 << (24 - (r % 32)),
                      e[(((r + 64) >> 9) << 4) + 15] = r,
                      p = 0;
                    p < e.length;
                    p += 16
                  ) {
                    for (
                      s = m[0],
                        o = m[1],
                        i = m[2],
                        a = m[3],
                        u = m[4],
                        c = m[5],
                        l = m[6],
                        d = m[7],
                        f = 0;
                      64 > f;
                      f++
                    )
                      (v[f] =
                        16 > f
                          ? e[f + p]
                          : t(
                              t(
                                t(
                                  n(v[f - 2], 17) ^
                                    n(v[f - 2], 19) ^
                                    (v[f - 2] >>> 10),
                                  v[f - 7]
                                ),
                                n(v[f - 15], 7) ^
                                  n(v[f - 15], 18) ^
                                  (v[f - 15] >>> 3)
                              ),
                              v[f - 16]
                            )),
                        (h = t(
                          t(
                            t(
                              t(d, n(u, 6) ^ n(u, 11) ^ n(u, 25)),
                              (u & c) ^ (~u & l)
                            ),
                            I[f]
                          ),
                          v[f]
                        )),
                        (P = t(
                          n(s, 2) ^ n(s, 13) ^ n(s, 22),
                          (s & o) ^ (s & i) ^ (o & i)
                        )),
                        (d = l),
                        (l = c),
                        (c = u),
                        (u = t(a, h)),
                        (a = i),
                        (i = o),
                        (o = s),
                        (s = t(h, P));
                    (m[0] = t(s, m[0])),
                      (m[1] = t(o, m[1])),
                      (m[2] = t(i, m[2])),
                      (m[3] = t(a, m[3])),
                      (m[4] = t(u, m[4])),
                      (m[5] = t(c, m[5])),
                      (m[6] = t(l, m[6])),
                      (m[7] = t(d, m[7]));
                  }
                  return m;
                })(
                  (function (e) {
                    for (var t = [], n = 0; n < 8 * e.length; n += 8)
                      t[n >> 5] |=
                        (255 & e.charCodeAt(n / 8)) << (24 - (n % 32));
                    return t;
                  })(e),
                  8 * e.length
                )
              )
            );
          }),
          (Ct.prototype.cookie = function (e, t, n) {
            if (arguments.length > 1 && (null === t || "object" != typeof t)) {
              if (
                ((n = this.extend({}, n)),
                null === t && (n.expires = -1),
                "number" == typeof n.expires)
              ) {
                var r = n.expires,
                  s = (n.expires = new Date());
                s.setDate(s.getDate() + r);
              }
              return (document.cookie = [
                encodeURIComponent(e),
                "=",
                n.raw ? String(t) : encodeURIComponent(String(t)),
                n.expires ? "; expires=" + n.expires.toUTCString() : "",
                n.path ? "; path=" + n.path : "; path=/",
                n.domain ? "; domain=" + n.domain : "",
                n.secure ? "; secure" : "",
              ].join(""));
            }
            n = t || {};
            var o,
              i = n.raw
                ? function (e) {
                    return e;
                  }
                : decodeURIComponent;
            return (o = new RegExp(
              "(?:^|; )" + encodeURIComponent(e) + "=([^;]*)"
            ).exec(document.cookie))
              ? i(o[1])
              : null;
          }),
          (o.prototype.valueOf = function () {
            return this.id;
          }),
          (o.prototype.toString = function () {
            return this.id;
          }),
          (o.prototype.createUUID = function () {
            var e = new Date(1582, 10, 15, 0, 0, 0, 0),
              t = new Date(),
              n = t.getTime() - e.getTime(),
              r = "-",
              s = o.getIntegerBits(n, 0, 31),
              i = o.getIntegerBits(n, 32, 47),
              a = o.getIntegerBits(n, 48, 59) + "1",
              u = o.getIntegerBits(o.rand(4095), 0, 7),
              c = o.getIntegerBits(o.rand(4095), 0, 7),
              l =
                o.getIntegerBits(o.rand(8191), 0, 7) +
                o.getIntegerBits(o.rand(8191), 8, 15) +
                o.getIntegerBits(o.rand(8191), 0, 7) +
                o.getIntegerBits(o.rand(8191), 8, 15) +
                o.getIntegerBits(o.rand(8191), 0, 15);
            return s + r + i + r + a + r + u + c + r + l;
          }),
          (o.getIntegerBits = function (e, t, n) {
            var r = o.returnBase(e, 16),
              s = new Array(),
              i = "",
              a = 0;
            for (a = 0; a < r.length; a++) s.push(r.substring(a, a + 1));
            for (a = Math.floor(t / 4); a <= Math.floor(n / 4); a++)
              i += s[a] && "" != s[a] ? s[a] : "0";
            return i;
          }),
          (o.returnBase = function (e, t) {
            var n = [
              "0",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9",
              "A",
              "B",
              "C",
              "D",
              "E",
              "F",
              "G",
              "H",
              "I",
              "J",
              "K",
              "L",
              "M",
              "N",
              "O",
              "P",
              "Q",
              "R",
              "S",
              "T",
              "U",
              "V",
              "W",
              "X",
              "Y",
              "Z",
            ];
            if (t > e) var r = n[e];
            else {
              var s = "" + Math.floor(e / t),
                o = e - s * t;
              if (s >= t) var r = this.returnBase(s, t) + n[o];
              else var r = n[s] + n[o];
            }
            return r;
          }),
          (o.rand = function (e) {
            return Math.floor(Math.random() * e);
          }),
          (v = new It()),
          (C = new mt()),
          (m = new vt()),
          (S = new Ct());
        var St = S.dateFormat(new Date(), "yyyyMMddhhmmss");
        return (
          (c = "webVideoCtrl" + St),
          (l = "webVideoCtrl" + St),
          "object" != typeof window.attachEvent &&
            S.browser().msie &&
            (S.createEventScript(
              c,
              "GetSelectWndInfo(SelectWndInfo)",
              "GetSelectWndInfo(SelectWndInfo);"
            ),
            S.createEventScript(
              c,
              "ZoomInfoCallback(szZoomInfo)",
              "ZoomInfoCallback(szZoomInfo);"
            ),
            S.createEventScript(
              c,
              "GetHttpInfo(lID, lpInfo, lReverse)",
              "GetHttpInfo(lID, lpInfo, lReverse);"
            ),
            S.createEventScript(
              c,
              "PluginEventHandler(iEventType, iParam1, iParam2)",
              "PluginEventHandler(iEventType, iParam1, iParam2);"
            ),
            S.createEventScript(
              c,
              "RemoteConfigInfo(lID)",
              "RemoteConfigInfo(lID);"
            ),
            S.createEventScript(
              c,
              "KeyBoardEventInfo(iKeyCode)",
              "KeyBoardEventInfo(iKeyCode);"
            )),
          this
        );
      })(),
      t = (window.WebVideoCtrl = e);
    t.version = "1.1.0";
  }
})(this),
  ("object" == typeof exports && "undefined" != typeof module) ||
    ("function" == typeof define && define.amd
      ? define(function () {
          return WebVideoCtrl;
        })
      : "function" == typeof define &&
        define.cmd &&
        define(function (e, t, n) {
          n.exports = WebVideoCtrl;
        }));
